Android中使用achartengine生成圖表的具體方法
今天在做項(xiàng)目的時(shí)候用到了圖表功能,記錄下來(lái)
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);
//不顯示底部說(shuō)明
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 來(lái)得到它。
*/
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 方法來(lái)得到它。
* getBarDemoRenderer 方法構(gòu)建了一個(gè) XYMultipleSeriesRenderer 用來(lái)設(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)績(jī)分析");
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手機(jī)衛(wèi)士之獲取聯(lián)系人信息顯示與回顯
這篇文章主要介紹了Android手機(jī)衛(wèi)士之獲取聯(lián)系人信息顯示與回顯的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Android通過(guò)交互實(shí)現(xiàn)貝塞爾曲線的繪制
本篇我們將介紹簡(jiǎn)單的交互式繪圖,通過(guò)獲取觸控位置來(lái)設(shè)定貝塞爾曲線的控制點(diǎn),從而實(shí)現(xiàn)交互式繪制曲線,感興趣的小伙伴可以了解一下2022-05-05Android進(jìn)度條ProgressBar的實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android進(jìn)度條ProgressBar的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Android自定義View實(shí)現(xiàn)時(shí)鐘功能
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)時(shí)鐘功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09Android使用Walle實(shí)現(xiàn)多渠道打包功能的實(shí)現(xiàn)示例
這篇文章主要介紹了Android使用Walle實(shí)現(xiàn)多渠道打包功能的實(shí)現(xiàn)示例,幫助大家更好的理解和學(xué)習(xí)使用Android開發(fā),感興趣的朋友可以了解下2021-04-04Android之側(cè)滑菜單DrawerLayout的使用介紹
本篇文章主要介紹了Android之側(cè)滑菜單DrawerLayout的使用介紹,可以生成通過(guò)在屏幕上水平滑動(dòng)打開或者關(guān)閉菜單,能給用戶一個(gè)不錯(cuò)的體驗(yàn)效果2017-02-02android自定義組件實(shí)現(xiàn)儀表計(jì)數(shù)盤
這篇文章主要為大家詳細(xì)介紹了android自定義組件實(shí)現(xiàn)儀表計(jì)數(shù)盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11