Android中使用achartengine生成圖表的具體方法
今天在做項(xiàng)目的時(shí)候用到了圖表功能,記錄下來
achartengine是google的一個(gè)開源項(xiàng)目,可以在https://code.google.com/p/achartengine/ 下載技術(shù)文檔,jar包以及項(xiàng)目源代碼
demo下載:https://code.google.com/p/achartengine/downloads/list

一、餅狀圖
新建工程,添加achartengine jar包
PieChart.java
package com.meritit.footlottery.view;
import org.achartengine.ChartFactory;
import org.achartengine.model.CategorySeries;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
public class PieChart {
public View execute(Context context) {
int[] colors = new int[] { Color.RED, Color.YELLOW, Color.BLUE };
DefaultRenderer renderer = buildCategoryRenderer(colors);
CategorySeries categorySeries = new CategorySeries("Vehicles Chart");
categorySeries.add("勝 ", 30);
categorySeries.add("負(fù)", 20);
categorySeries.add("平", 60);
return ChartFactory
.getPieChartView(context, categorySeries, renderer);
}
protected DefaultRenderer buildCategoryRenderer(int[] colors) {
DefaultRenderer renderer = new DefaultRenderer();
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
//顯示標(biāo)簽
renderer.setShowLabels(true);
//不顯示底部說明
renderer.setShowLegend(false);
//設(shè)置標(biāo)簽字體大小
renderer.setLabelsTextSize(15);
renderer.setLabelsColor(Color.BLACK);
renderer.setZoomEnabled(false);
renderer.setPanEnabled(false);
return renderer;
}
}
使用方法
//View pieChart = new PieChart().execute(this);
//chartArea.addView(pieChart);
獲得一個(gè)View對(duì)象,在需要添加的布局下面直接addView
二、柱狀圖
package com.meritit.footlottery.view;
import java.util.Random;
import org.achartengine.ChartFactory;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import com.meritit.footlottery.R;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
public class BarChart {
private Context context;
public View execute(Context context) {
this.context = context;
return ChartFactory
.getBarChartView(context, getBarDemoDataset(), getBarDemoRenderer(), Type.DEFAULT);
}
/**
* XYMultipleSeriesDataset 類型的對(duì)象,用于提供圖表需要表示的數(shù)據(jù)集,
* 這里我們用 getBarDemoDataset 來得到它。
*/
private XYMultipleSeriesDataset getBarDemoDataset() {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
final int nr = 10;
Random r = new Random();
for (int i = 0; i < 3; i++) {
CategorySeries series = new CategorySeries("球隊(duì) " + (i + 1));
for (int k = 0; k < nr; k++) {
series.add(100 + r.nextInt() % 100);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
}
/**
* XYMultipleSeriesRenderer 類型的對(duì)象,用于提供圖表展現(xiàn)時(shí)的一些樣式,
* 這里我們用 getBarDemoRenderer 方法來得到它。
* getBarDemoRenderer 方法構(gòu)建了一個(gè) XYMultipleSeriesRenderer 用來設(shè)置2個(gè)系列各自的顏色
*/
public XYMultipleSeriesRenderer getBarDemoRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(Color.BLUE);
renderer.addSeriesRenderer(r);
r = new SimpleSeriesRenderer();
r.setColor(Color.GREEN);
renderer.addSeriesRenderer(r);
r = new SimpleSeriesRenderer();
r.setColor(Color.RED);
renderer.addSeriesRenderer(r);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.TRANSPARENT);
renderer.setMarginsColor(context.getResources().getColor(R.color.main_background_color));
renderer.setZoomEnabled(false, false);
renderer.setPanEnabled(false, false);
renderer.setLabelsTextSize(15);
renderer.setLabelsColor(Color.BLACK);
setChartSettings(renderer);
return renderer;
}
/**
* setChartSettings 方法設(shè)置了下坐標(biāo)軸樣式。
*/
private void setChartSettings(XYMultipleSeriesRenderer renderer) {
renderer.setChartTitle("戰(zhàn)績分析");
renderer.setXTitle("橫坐標(biāo)");
renderer.setYTitle("縱坐標(biāo)");
renderer.setXAxisMin(0.5);
renderer.setXAxisMax(10.5);
renderer.setYAxisMin(0);
renderer.setYAxisMax(210);
}
}
上面代碼部分解釋:
renderer.setApplyBackgroundColor(true); //設(shè)置背景使能,為true下面的設(shè)置背景才有效
renderer.setBackgroundColor(Color.TRANSPARENT); //設(shè)置背景
renderer.setMarginsColor() //設(shè)置周圍區(qū)域顏色
renderer.setZoomEnabled(false, false); //設(shè)置是否能放大
renderer.setPanEnabled(false, false); //設(shè)置是否可以移動(dòng)
renderer.setLabelsTextSize(15); //設(shè)置標(biāo)簽文字大小
renderer.setLabelsColor(Color.BLACK);
相關(guān)文章
Android Studio 透明狀態(tài)欄的實(shí)現(xiàn)示例
這篇文章主要介紹了Android Studio 透明狀態(tài)欄的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Android自定義實(shí)現(xiàn)開關(guān)按鈕代碼
經(jīng)??梢钥吹揭恍┻x擇開個(gè)狀態(tài)的配置文件,但是外觀都不多好看。我感覺還是自定義的比較好,下面小編給大家介紹通過Android自定義實(shí)現(xiàn)開關(guān)按鈕代碼,感興趣的童鞋一起學(xué)習(xí)吧2016-05-05
Android實(shí)現(xiàn)在列表List中顯示半透明小窗體效果的控件用法詳解
這篇文章主要介紹了Android實(shí)現(xiàn)在列表List中顯示半透明小窗體效果的控件用法,結(jié)合實(shí)例形式分析了Android半透明提示框的實(shí)現(xiàn)與設(shè)置技巧,需要的朋友可以參考下2016-06-06
Ionic2創(chuàng)建App啟動(dòng)頁左右滑動(dòng)歡迎界面
使用Ionic2創(chuàng)建應(yīng)用非常簡單,只需在V1的命令后跟上--v2即可.這篇文章主要介紹了Ionic2創(chuàng)建App啟動(dòng)頁左右滑動(dòng)歡迎界面的相關(guān)資料,需要的朋友可以參考下2016-10-10
Android中實(shí)現(xiàn)Webview頂部帶進(jìn)度條的方法
這篇文章主要介紹了Android中實(shí)現(xiàn)Webview頂部帶進(jìn)度條的方法,當(dāng)前很流行的一個(gè)效果,就是打開網(wǎng)頁時(shí)會(huì)在頂部顯示一個(gè)打開進(jìn)度條,需要的朋友可以參考下2015-01-01
詳解Android中Activity運(yùn)行時(shí)屏幕方向與顯示方式
本文主要對(duì)如何控制Android中Activity運(yùn)行時(shí)屏幕方向與顯示方式進(jìn)行詳細(xì)全面的實(shí)例講解。具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12
android使用url connection示例(get和post數(shù)據(jù)獲取返回?cái)?shù)據(jù))
這篇文章主要介紹了android使用URLConnection來get和post數(shù)據(jù)獲取返回的數(shù)據(jù),大家參考使用吧2014-01-01

