前言:
在看本篇的時候,請確認已經看過了
某android平板項目開發筆記----aChartEngine圖表顯示(1)
不然,有些地方這裏就不再說明…
關於XYMutilpleSeriesDataset 一些注意的地方
我們可以使用的所有Series對象關係如下圖
從圖中,我們可以看出,XYMutilpleSeriesDataset 只能添加XYSeries,對於,線性圖而言,我們需要明確輸入x,y值,這樣問題不是很大,但是,對於條形圖,餅圖,對於x軸的屬性就有點多餘了,對於非線性圖而言,我們需要的數據僅僅只需要一個值,對於這種情況,我們就需要使用一個新的對象,CategorySeries ,因爲,我們繪製的是二維座標圖,所有我們在添加到XYMutilpleSeriesDataset 時需要把CategorySeries 對象轉換爲二維座標,
View or Intent?
在昨天的例子中,我直接構造了一個可以用於直接顯示的Intent,這樣做雖然,方便,但是,可編輯的地方就不多,例如,我需要在一個屏幕上顯示多個圖表那就無能爲力了.對於這種情況,我們需要構造一個View,方法也很簡單,這裏先對比一下,兩種情況的使用範圍
|
優點 |
缺點 |
Intent方式顯示圖表
|
簡單方便,對於單單顯示圖表而言是個不錯的選擇 |
無法進行自定義操作 |
自定義View方式顯示圖表
|
可以在一個屏幕顯示多個圖表,可以自定義顯示位置 |
需要進行一定的配置 |
說了這麼多來一個例子吧:請認真看註釋!!!
001 |
public
class BarExActivity extends
Activity { |
004 |
protected
void onCreate(Bundle savedInstanceState) {
|
006 |
super .onCreate(savedInstanceState);
|
007 |
setContentView(R.layout.main);
|
009 |
XYMultipleSeriesRenderer renderer =
new XYMultipleSeriesRenderer();
|
011 |
XYMultipleSeriesDataset dataset =
new XYMultipleSeriesDataset();
|
013 |
Random r =
new Random();
|
014 |
for
( int
i = 0 ; i <
2 ; i++) { |
016 |
CategorySeries series =
new CategorySeries( "test"
+ (i + 1 ));
|
018 |
for
( int
k = 0 ; k <
10 ; k++) { |
020 |
series.add(Math.abs( 20
+ r.nextInt() % 100 ));
|
023 |
dataset.addSeries(series.toXYSeries());
|
026 |
XYSeriesRenderer xyRenderer =
new XYSeriesRenderer();
|
028 |
xyRenderer.setColor(Color.BLUE);
|
033 |
renderer.addSeriesRenderer(xyRenderer);
|
035 |
xyRenderer =
new XYSeriesRenderer();
|
036 |
xyRenderer.setColor(Color.RED);
|
038 |
renderer.addSeriesRenderer(xyRenderer);
|
042 |
double [] range = {
0 , 10 ,
1 , 200
}; |
043 |
renderer.setRange(range);
|
054 |
renderer.setXLabels( 10 );
|
055 |
renderer.setYLabels( 10 );
|
058 |
renderer.setXLabelsAlign(Align.CENTER);
|
059 |
renderer.setYLabelsAlign(Align.RIGHT);
|
062 |
renderer.setAxesColor(Color.RED);
|
064 |
renderer.setShowGrid( true );
|
066 |
renderer.setLabelsColor(Color.BLACK);
|
069 |
renderer.setMarginsColor(Color.CYAN);
|
071 |
renderer.setShowAxes( true );
|
074 |
renderer.setBarSpacing( 0.1 );
|
075 |
int
length = renderer.getSeriesRendererCount(); |
077 |
for
( int
i = 0 ; i < length; i++) {
|
078 |
SimpleSeriesRenderer ssr = renderer.getSeriesRendererAt(i);
|
081 |
ssr.setChartValuesTextAlign(Align.RIGHT);
|
082 |
ssr.setChartValuesTextSize( 12 );
|
083 |
ssr.setDisplayChartValues( true );
|
090 |
LinearLayout barchart = (LinearLayout) findViewById(R.id.barchart);
|
091 |
GraphicalView mChartView = ChartFactory.getBarChartView( this , dataset,
|
092 |
renderer, Type.DEFAULT);
|
094 |
barchart.addView(mChartView,
new LayoutParams(LayoutParams.FILL_PARENT,
|
095 |
LayoutParams.FILL_PARENT));
|
我們還需要在佈局文件裏面添加:
1 |
< LinearLayout
android:id = "@+id/barchart"
android:orientation = "horizontal" |
2 |
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
android:layout_weight = "1"
/> |
顯示效果:
把昨天的例子也添加進來,顯示效果:
今天就這麼多吧,接下來的日子,我需要設計數據庫,這個aChartEngine 就暫且告一段落了吧…
轉自:
http://www.cnblogs.com/youxilua/archive/2012/01/18/2325132.html