亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android 圖表應(yīng)用 解決方案

系統(tǒng) 1914 0

本文演示在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)用的格式如下即可:

  http://chart.apis.google.com/chart?cht=p3&chd=t:30,60,10&chs=250x100&chl=cars|bikes|trucks
  其中cht=p3表示生成的是一個餅狀圖;chd=t:30,60,10表示要生成三個部分的數(shù)據(jù),分別是30,60,10,當(dāng)然也可以其他更復(fù)雜的數(shù)據(jù)形式。
  chs=250*100表示的是圖型的大小(寬度*高度);chl=cars|bikes|trucks指出了這三部分?jǐn)?shù)據(jù)內(nèi)容的文字標(biāo)簽,即實際上顯示在圖表上的。
  使用方法很簡單,只需要在oncreate事件中如下調(diào)用即可:
@Override?

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,生成圖形。

示例效果如下圖:

Android 圖表應(yīng)用 解決方案 ?

?

第二種解決方案是使用Achartengine庫。

下載地址在:http://code.google.com/p/achartengine/downloads/list ,將其JAR下載后,放到工程的lib包庫中,結(jié)構(gòu)如下圖:?

Android 圖表應(yīng)用 解決方案

代碼如下顯示:

?

public ? class ?AChartExample?{??

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);   

最后生成的效果如下圖:

Android 圖表應(yīng)用 解決方案

?

示例代碼下載: /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,代碼如下:

public ? class ?ChartDroidDataProvider? extends ?ContentProvider?{??

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。

接下來,代碼如下:

Intent?chartDroidIntent?=? new ?Intent(Intent.ACTION_VIEW,??

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。下圖是運行效果:

? Android 圖表應(yīng)用 解決方案

?

第四種解決方案是使用RChart 2?庫,關(guān)于RChart 2信息訪問:http://www.java4less.com/charts/chart.php

下面是一些示例實現(xiàn)效果:

Android 圖表應(yīng)用 解決方案 ? Android 圖表應(yīng)用 解決方案

?

?最后,希望轉(zhuǎn)載的朋友能夠尊重作者的勞動成果,加上轉(zhuǎn)載地址: http://www.cnblogs.com/hanyonglu/archive/2012/02/20/2360334.html ? ?謝謝。

完畢。^_^

Android 圖表應(yīng)用 解決方案


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲精品久久久久久久无 | 麻豆国产原创 | 亚洲欧美日韩中文综合在线不卡 | 在线播放国产福利视频 | 99视频在线国产 | 久久香蕉国产线看观看亚洲片 | 99综合久久| 久热综合| 在线免费观看国产精品 | 四虎影视成人精品 | 日本爽快片100色毛片 | 99久久亚洲国产高清观看 | 哪里有毛片 | 免费国产成人高清在线观看麻豆 | 天天摸天天操天天射 | 国产毛片a | 九九九热| 五月天丁香六月欧美综合 | 四虎影视国产永久免费 | 久久综合九色婷婷97 | sss欧美华人整片在线观看 | 久在线观看 | 亚洲国产精品专区 | 七七久久 | 咪咪爱在线观看 | 91精品免费观看 | 搡女人视频免费 | 香蕉视频网站免费观视频 | 五月天婷婷视频 | 激情在线播放免费视频高清 | 亚洲精品二区中文字幕 | 国产精品伦理久久久久久 | 九月丁香婷婷亚洲综合色 | 国产成在线观看免费视频成本人 | 久久精品99香蕉国产 | 国产亚洲精品一区二区在线播放 | 国产亚洲综合在线 | 欧美性大战久久久久久久蜜桃 | 毛茸茸free牲交| 亚洲精品人成在线观看 | 天天摸夜夜 |