ANR:AxisRenderer.java:212
got ANR using linechart
version: v3.1.0-alpha trace: 1 com.github.mikephil.charting.renderer.AxisRenderer.computeAxisValues(AxisRenderer.java:212) 2 com.github.mikephil.charting.renderer.XAxisRenderer.computeAxisValues(XAxisRenderer.java:72) 3 com.github.mikephil.charting.renderer.XAxisRenderer.computeAxis(XAxisRenderer.java:67) 4 com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:209) 5 android.view.View.draw(View.java:16195) 6 android.view.View.draw(View.java:16107) 7 android.view.ViewGroup.drawChild(ViewGroup.java:3610) 8 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400) 9 android.view.View.draw(View.java:16105) 10 android.view.ViewGroup.drawChild(ViewGroup.java:3610) 11 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400) 12 android.view.View.draw(View.java:16105) 13 android.view.ViewGroup.drawChild(ViewGroup.java:3610) 14 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400) 15 android.view.View.draw(View.java:16198) 16 android.view.View.draw(View.java:16107) 17 android.view.ViewGroup.drawChild(ViewGroup.java:3610) 18 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400) 19 android.view.View.draw(View.java:16105) 20 android.view.ViewGroup.drawChild(ViewGroup.java:3610) 21 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400) 22 android.view.View.draw(View.java:16105) 23 android.view.ViewGroup.drawChild(ViewGroup.java:3610) 24 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400) 25 android.view.View.draw(View.java:16105) 26 android.view.ViewGroup.drawChild(ViewGroup.java:3610) 27 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400) 28 android.view.View.draw(View.java:16105) 29 android.view.ViewGroup.drawChild(ViewGroup.java:3610) 30 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400) 31 android.view.View.draw(View.java:16198) 32 com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:2734) 33 android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2728) 34 android.view.ViewRootImpl.draw(ViewRootImpl.java:2642) 35 android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2434) 36 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067) 37 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) 38 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) 39 android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 40 android.view.Choreographer.doCallbacks(Choreographer.java:670) 41 android.view.Choreographer.doFrame(Choreographer.java:606) 42 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 43 android.os.Handler.handleCallback(Handler.java:739) 44 android.os.Handler.dispatchMessage(Handler.java:95) 45 android.os.Looper.loop(Looper.java:148) 46 android.app.ActivityThread.main(ActivityThread.java:5417) 47 java.lang.reflect.Method.invoke(Native Method) 48 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 49 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
code:
private void configChart() {
YAxis ly = chart.getAxisLeft();
ly.setAxisMinimum(60);
ly.setAxisMaximum(200);
ly.setLabelCount(8, true);
ly.setDrawGridLines(false);
ly.setTextColor(0xffefefef);
YAxis ry = chart.getAxisRight();
ry.setAxisMaximum(200);
ry.setAxisMinimum(60);
ry.setLabelCount(8, true);
ry.setDrawGridLines(false);
ry.setTextColor(0xffefefef);
chart.setScaleXEnabled(true);
chart.setScaleYEnabled(false);
chart.setDragEnabled(false);
chart.setTouchEnabled(true);
data = new LineData();
data.setValueTextColor(Color.WHITE);
chart.getDescription().setEnabled(false);
chart.setData(data);
chart.getLegend().setEnabled(false);
chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
chart.setHighlightPerTapEnabled(true);
XAxis xAxis = chart.getXAxis();
xAxis.setValueFormatter(new MyXAxisValueFormatter(dataList));//dataList:object list
xAxis.setGranularity(1);
xAxis.setAxisMinimum(1);
chart.setDrawGridBackground(true);
xAxis.setDrawAxisLine(true);
xAxis.setDrawGridLines(false);
xAxis.setTextColor(0xffefefef);
initEntry();
}
private void initEntry() {
LineData data = chart.getData();
data.addDataSet(createSet());
data.notifyDataChanged();
chart.notifyDataSetChanged();
chart.moveViewToX(data.getEntryCount());
}
private LineDataSet createSet() {
ArrayList<Entry> values = new ArrayList<>();
for (int i = 0; i < heartRateList.size(); i++) {
int h = dataList.get(i).getValue();//get value from object
h = h > 200 ? 200 : h < 60 ? 60 : h;
values.add(new Entry(i, h));
}
LineDataSet set = new LineDataSet(values, "y-value");
set.setColor(Color.rgb(0xe6, 0x12, 0x10));
set.setAxisDependency(YAxis.AxisDependency.LEFT);
set.setLineWidth(1.5f);
set.setDrawValues(false);
set.setDrawCircles(false);
set.setMode(LineDataSet.Mode.LINEAR);
set.setDrawFilled(false);
return set;
}
public class MyXAxisValueFormatter implements IAxisValueFormatter {
private List<MyData> mValues;
public MyXAxisValueFormatter(List<MyData> mValues) {
this.mValues = mValues;
}
@Override
public String getFormattedValue(float value, AxisBase axis) {
if (value < 0) {
return "";
}
int position = (int) value;
if (position >= mValues.size()) return "";
String result = ""+mValues.get(position).getLabel();//get label from object
return result;
}
}
解决了嘛