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

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热只有精品一区二区 | 999精品视频这里只有精品 | 日本伊人 | 四虎亚洲国产成人久久精品 | 九九热视频在线播放 | 日韩 欧美 国产 亚洲 中文 | 日本 毛片基地-亚洲 | 99久久综合 | 四虎影院精品在线观看 | 免费观看男女羞羞的视频网站 | 深夜精品寂寞在线观看黄网站 | 日韩毛片高清在线看 | 一本色道久久综合狠狠躁 | 欧美香蕉爽爽人人爽观看猫咪 | 日韩午夜在线视频不卡片 | 久青草视频免费观看青 | 亚洲va久久久久综合 | 91日韩视频 | 亚洲 国产精品 日韩 | 国内精品免费一区二区观看 | 9热在线精品视频观看 | 狠狠se | 91精品免费国产高清在线 | 免费一级毛片在线播放放视频 | 天天操天天玩 | 国产欧美一区二区三区久久 | 国产在线观看成人免费视频 | 亚洲狠狠色丁香婷婷综合 | 欧美香蕉视频 |