また、日本語のドキュメントは見つけられないのでとりあえずサンプルを読む。まず読むのはChartDemo.javaとBudgetPieChart.javaあたりかな。BudegetPieChartのexecuteで(ChartFactory.getPieChartIntentで)返すintentをChartDemoではstartActivityしている。
IntentじゃなくてViewを返して欲しいなぁと思って見てると、ChartFactory.getPieChartViewってのがあった。GraphicalViewを返してくれるようだ。
サンプルはこんな感じかな。データセットは前回と同じ。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout chart_area = (LinearLayout) findViewById(R.id.chart_area);
CategorySeries series = new CategorySeries(null);
DefaultRenderer renderer = new DefaultRenderer();
int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA,
Color.YELLOW, Color.CYAN, Color.RED };
series.add("Cupcake", new Integer(40));
series.add("Donut", new Integer(5));
series.add("Eclair", new Integer(10));
series.add("Froyo", new Integer(25));
series.add("Gingerbread", new Integer(20));
series.add("Honeycomb", new Integer(50));
renderer.setLabelsTextSize(15); //ラベルの文字サイズ
// renderer.setShowLabels(false); //ラベルを表示するか
renderer.setLegendTextSize(24); //凡例の文字サイズ
// renderer.setShowLegend(false); //凡例を表示するか
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
GraphicalView pie_chart = ChartFactory.getPieChartView(this, series, renderer);
chart_area.addView(pie_chart);
}
main.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:text="PieChart"
android:layout_margin="10dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/chart_area"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
実行結果ラベル(円グラフの周りのやつ)も凡例(円グラフの下のやつ)も消すことはできた。が、achartengineではサイズの調整ができるのかがわからなかった。
あと、colorの設定の数が足りないと、下記エラーが出るので項目の数が可変の場合にはちょっと使いにくそう。
ERROR/AndroidRuntime(404): Caused by: java.lang.IllegalArgumentException: Dataset and renderer should be not null and the dataset number of items should be equal to the number of series renderers
他にもグラフを描画するライブラリはあるので、時間のあるときに見てみよう。