2016-09-22 44 views
0

我試圖在用戶點擊按鈕時將MPAndroidChart LineChart視圖轉換爲Bitmap對象,以將圖表另存爲圖像。但是,我得到一個ArrayIndexOutOfBoundsException。我正在使用MPAndroidChart v。3.0.0-beta。該代碼是下面的:將MPAndroidChart視圖轉換爲位圖給出ArrayIndexOutOfBoundsException

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(畫布)以上

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) 在玉米.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:252) at android.view.View.draw(View.java:14788) at com.dnaphone.edu.utils.ConstantsAndUtils.getBitmapFromView(ConstantsAndUtils的.java:1409) 在com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground(HistoryExperimentResultFragment.java:1886) 在com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground(HistoryExperimentResultFragment.java:1655) 在安卓.os.AsyncTask $ 2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor的.java:1112) 在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587) 在java.lang.Thread.run(Thread.java:841)

編輯:該問題已在最終的3.0.0版本中得到解決。

回答

0

,如果你想保存圖表爲圖像,那麼你應該使用

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

在這test.png是你的形象的名字和50品質圖像的該圖像保存在設備的存儲。

+0

我試過了,但我得到了同樣的異常。 – aleGrazioli

+0

我認爲沒有什麼會產生ArrayIndexOutOfBoundsException。 –

+0

我已經檢查了GitHub上的庫代碼,並且在更新計數器達到數組大小的函數中存在錯誤,然後使用它來訪問這樣的數組。當然,如果計數器的值爲n,則最後一個數組元素的索引爲n-1。這會產生異常。我正在等待lib的作者來解決這個問題。 – aleGrazioli