将MPAndroidChart视图转换为Bitmap会产生ArrayIndexOutOfBoundsException

时间:2016-09-22 13:56:13

标签: android bitmap mpandroidchart

我试图在用户点击按钮时将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版本中得到解决。

1 个答案:

答案 0 :(得分:0)

如果要将图表保存为图像,则应使用

mChart.saveToGallery("test.png", 50);

test.png中的

是您的图片名称和图片的50质量,此图片保存在您的设备存储空间中。