本文演示在Android平臺中繪制和展示圖表示例,本示例是基于RChart 2實現(xiàn)的。
在一個系統(tǒng)中經(jīng)常要用到圖表統(tǒng)計數(shù)據(jù),在WEB開發(fā)中圖表繪制是一件簡單的事情,因為有比較多的開源方案。但在Android中開源方案并不多。
Android中繪制圖表解決方案: ?
1) 使用google 圖表 api ?
2) 使用Achartengine庫(http://www.achartengine.org/)
3) 使用chartdroid庫(http://code.google.com/p/chartdroid/)
4) 使用?RChart 2庫實現(xiàn)。
?
第一種解決方案是使用google的圖表API。
可以到如下這個地址去申請使用google 圖表API(http://code.google.com/apis/chart/)。
這個API特別適合去生成餅狀圖。調(diào)用的格式如下即可:
public
void
?onCreate(Bundle?savedInstanceState)?{?
super
.onCreate(savedInstanceState);?
WebView?googleChartView?=?
new
?WebView(
this
);?
setContentView(googleChartView);?
String?mUrl?=?"http://chart.apis.google.com/chart?cht=p3&?chd=t:30,60,10&chs=250x100&chl=cars|bikes|trucks";?
googleChartView.loadUrl(mUrl);?
}
由于需要連接網(wǎng)絡(luò),需要在配置文件中加入訪問網(wǎng)絡(luò)權(quán)限:
? < uses-permission? android:name ="android.permission.INTERNET" ? />
?關(guān)于google 圖表API更多的資料請參考http://code.google.com/intl/zh-CN/apis/chart/image/docs/making_charts.html
?
缺點:必須連網(wǎng)才能訪問API,生成圖形。
示例效果如下圖:
?
第二種解決方案是使用Achartengine庫。
下載地址在:http://code.google.com/p/achartengine/downloads/list ,將其JAR下載后,放到工程的lib包庫中,結(jié)構(gòu)如下圖:?
代碼如下顯示:
?
public
?Intent?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("cars?",?30);?
categorySeries.add("trucks",?20);?
categorySeries.add("bikes?",?60);?
return
?ChartFactory.getPieChartIntent(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);?
}?
return
?renderer;?
}?
}
?在我們的主類中,進(jìn)行如下調(diào)用:
Intent achartIntent = new AChartExample().execute(this);
startActivity(achartIntent);
最后生成的效果如下圖:
?
示例代碼下載: /Files/hanyonglu/AndroidFile/achartengine-0.7.0-demo-source.rar ? ?
?
第三種解決方案是使用chartdroid,要注意的是。
如果使用這種方法的話,必須先下載并安裝Chardroid這個APK,下載地址在:http://code.google.com/p/chartdroid/downloads/list,下載并將其APK包進(jìn)行安裝。
?要使用Chartdroid,必須要使用content provider,代碼如下:
static
final
?String?AUTHORITY?=??"com.xyz.contentprovider.chardroid";?
@Override
public
?String?getType(Uri?uri)?{?
return
?"vnd.android.cursor.dir/vnd.com.googlecode.chartdroid.graphable";?
}?
public
?
static
?
final
?Uri?PROVIDER_URI?=?
new
?Uri.Builder().scheme(?
ContentResolver.SCHEME_CONTENT).authority(AUTHORITY).build();?
@Override
public
?Cursor?query(Uri?uri,?String[]?projection,?String?selection,?
String[]?selectionArgs,?String?sortOrder)?{?
??
//
獲得實際數(shù)據(jù)??
MatrixCursor?c?=?
new
?MatrixCursor(
new
?String[]??????????????????{?BaseColumns._ID,?
"COLUMN_AXIS_INDEX",?"COLUMN_SERIES_INDEX",?
"COLUMN_DATUM_VALUE",?"COLUMN_DATUM_LABEL"?});?
??
c.newRow().add(1).add(0).add(1).add(30).add(
null
);?
c.newRow().add(2).add(0).add(1).add(10).add(
null
);?
c.newRow().add(3).add(0).add(1).add(60).add(
null
);?
??
return
?c;?
}?
}?
在上面的代碼中,我們使用了MatrixCursor生成了相關(guān)的數(shù)據(jù):30,10,60。關(guān)于ChartDroid的詳細(xì)ContentProvider信息,請參考http://code.google.com/p/chartdroid/wiki/InterfaceSpecification。
接下來,代碼如下:
ChartDroidDataProvider.PROVIDER_URI);?
chartDroidIntent.putExtra(Intent.EXTRA_TITLE,?"Chart?droid");?
chartDroidIntent?
.addCategory("com.googlecode.chartdroid.intent.category.PIE_CHART");?
startActivity(chartDroidIntent);??
注意,這里要使用charDroidIntent的addCategory方法去指定圖表的類型,即 com.googlecode.chartdroid.intent.category.PIE_CHART。下圖是運行效果:
?
第四種解決方案是使用RChart 2?庫,關(guān)于RChart 2信息訪問:http://www.java4less.com/charts/chart.php
下面是一些示例實現(xiàn)效果:
?
?最后,希望轉(zhuǎn)載的朋友能夠尊重作者的勞動成果,加上轉(zhuǎn)載地址:
http://www.cnblogs.com/hanyonglu/archive/2012/02/20/2360334.html
?
?謝謝。
完畢。^_^
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
