2016-09-22 3 views
0

사용자가 단추를 누를 때 차트를 이미지로 저장하기 위해 MPAndroidChart LineChart보기를 비트 맵 개체로 변환하려고합니다. 그러나 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.drawExtras (LineChartRenderer.java:595) 에서 com.github.mikephil.charting.renderer.LineChartRenderer.drawCircles (LineChartRenderer.java:689) 에서의 COM .github.mikephil.charting.charts.BarLineChartBase.onDraw (BarLineChartBase.java:252) android.view.View.draw (View.java:14788) at com.dnaphone.edu.utils.ConstantsAndUtils.getBitmapFromView (ConstantsAndUtils 된 .java : 1409 com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground에서 com.dnaphone.edu.fragments.HistoryExperimentResultFragment $ 24.doInBackground (HistoryExperimentResultFragment.java:1886) (HistoryExperimentResultFragment.java:1655) 에서) 안드로이드에서 .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 java.lang.Thread.run에서 java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587) 에서) (Thread.java:841)

편집 : 이 문제는 최종 3.0.0 릴리스에서 해결되었습니다. 당신은 이미지로 차트를 저장하려면

답변

0

, 당신은이 test.png에서

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

이 이미지 이름과 이미지의 50 품질 및 장치 메모리에 저장된 이미지입니다 사용해야합니다.

+0

시도했지만 동일한 예외가 발생합니다. – aleGrazioli

+0

나는 이것에 ArrayIndexOutOfBoundsException을 생성하는 것은 아무것도 없다고 생각한다. –

+0

GitHub에서 라이브러리 코드를 검사했는데 배열의 크기까지 카운터를 업데이트하는 함수에 오류가 있습니다. 그런 다음이 배열을 사용하여 이러한 배열에 액세스합니다. 물론 카운터에 값 n이 있으면 마지막 배열 요소의 인덱스는 n-1입니다. 이 예외가 생성됩니다. lib의 저자가 문제를 해결하기를 기다리고 있습니다. – aleGrazioli

관련 문제