我试图在用户点击按钮时将MPAndroidChart LineChart视图转换为Bitmap对象,以将图表另存为图像。但是,我得到一个ArrayIndexOutOfBoundsException。我正在使用MPAndroidChart v.3.0.0-beta。代码如下:
public static Bitmap getBitmapFromView(View graph) {
Bitmap returnedBitmap = Bitmap.createBitmap(graph.getWidth(), graph.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
Drawable bgDrawable = graph.getBackground();
if (bgDrawable != null)
bgDrawable.draw(canvas);
else
canvas.drawColor(Color.WHITE);
view.draw(canvas);
return returnedBitmap;
}
以下是例外,ConstantsAndUtils.java的第1409行是 view.draw(canvas)。
java.lang.ArrayIndexOutOfBoundsException:length = 1;索引= 1 在com.github.mikephil.charting.renderer.LineChartRenderer.drawCircles(LineChartRenderer.java:689) 在com.github.mikephil.charting.renderer.LineChartRenderer.drawExtras(LineChartRenderer.java:595) at com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:252) 在android.view.View.draw(View.java:14788) 在com.dnaphone.edu.utils.ConstantsAndUtils.getBitmapFromView(ConstantsAndUtils.java:1409) at com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground(HistoryExperimentResultFragment.java:1886) at com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground(HistoryExperimentResultFragment.java:1655) 在android.os.AsyncTask $ 2.call(AsyncTask.java:288) 在java.util.concurrent.FutureTask.run(FutureTask.java:237) 在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) 在java.lang.Thread.run(Thread.java:841)
编辑:问题已在最终的3.0.0版本中得到解决。
答案 0 :(得分:0)
如果要将图表保存为图像,则应使用
mChart.saveToGallery("test.png", 50);
test.png
中的是您的图片名称和图片的50
质量,此图片保存在您的设备存储空间中。