나는이 사실을 거의 한 달 동안 갇혀 있습니다. 내 안드로이드 코드에서 'afreechart'를 사용하여 완벽한 차트를 가지고 있지만, 라이브러리는 아직 이미지로 차트를 내보내는 기능을 지원하지 않는 것 같습니다 ('jfreechart'를 기반으로하므로이 작업을 수행하므로).Android에서 차트를 이미지로 내보내기
차트의 뷰를 가져 와서 캔버스로 변환하고 비트 맵 라이브러리의 압축 기능을 사용하여 저장하려고했지만 결과적으로 완전히 검정색 이미지가 표시됩니다. 이 같은 방법을 시도하고 내 코드의 다른보기 (선형보기 및 relativelayout 같은 간단한보기) 작동합니다.
그 후 차트 활동의 스크린 샷을 만들고 그 활동을 닫으려는 루틴을 만들려고했습니다. 하지만 코드로 그렇게 할 수있는 방법을 찾지 못했습니다. 가장 가까운 것은 원숭이 러너와 함께했습니다.
그래서 나는이 아이디어를 포기하고 'kichart', 'achartengine'등과 같은 다른 라이브러리를 찾으려고했지만 아무도 그 일을하지 않는 것 같아요. 차트를 이미지로 내보내는 것이 그렇게 어렵지는 않을 것입니다 ... 어떤 아이디어입니까?
내가 레이아웃의 배경색을 설정할 때, 반환 된 이미지는 배경색이있는 전체 사각형이므로 차트가 아닌 레이아웃이 나타납니다.
내 코드 :
package com.kichart;
import java.io.File;
import java.io.FileOutputStream;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
public class Main extends Activity {
LinearLayout ll;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
float[] values = new float[] { 2.0f,1.5f, 2.5f, 1.0f , 3.0f };
String[] verlabels = new String[] { "great", "ok", "bad" };
String[] horlabels = new String[] { "today", "tomorrow", "next week", "next month" };
GraphView graphView = new GraphView(this, values, "GraphViewDemo",horlabels, verlabels, GraphView.BAR);
ll = new LinearLayout(this);
ll.addView(graphView);
Draw2d d = new Draw2d(this);
setContentView(d);
//setContentView(graphView);
}
public class Draw2d extends View {
public Draw2d(Context context) {
super(context);
setDrawingCacheEnabled(true);
}
@Override
protected void onDraw(Canvas c) {
ll.setBackgroundColor(Color.WHITE);
ll.measure(MeasureSpec.getSize(ll.getWidth()), MeasureSpec.getSize(ll.getHeight()));
ll.layout(400, 400, 400, 400);
ll.draw(c);
try {
getDrawingCache().compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(new File("/mnt/sdcard/graph2.png")));
} catch (Exception e) {
Log.e("Error--------->", e.toString());
}
super.onDraw(c);
}
}
}
작동하지 않습니다 도움이 될 것입니다, 그리고 난 얻었다 이미지는 배경색을 나타냅니다. 나는 주제에 관한 나의 코드를 넣을 것이다. –
나는 (내가 슬픈 것처럼) 문제가 있다고 생각한다 : 비트 맵이 생성되기 전에 그 비트 맵을 얻으려고한다. onCreate가 끝난 후에 만 같은 문제가 생겼을 때 비트 맵을 얻을 수 있었다. 그래서, 당신은 그래프 뷰와 버튼으로 뷰를 만들 수 있으며, 버튼의 onClick에 대답을 게시 한 코드를 넣을 수 있습니다 (그래프 뷰가 생성되었는지 확인하기 위해) – Luciano
남자! 진지하게, 나는 당신에게 감사하는 방법을 모른다. 나는 이것을 한 달 동안 붙들 았고, 정말 고마워! 그리고 늦은 대답에 대해 유감스럽게도, 이번 주말에는 메모를하지 않았습니다 ... 감사합니다. 잘 했어요! =) –