某android平板項目開發筆記----aChartEngine圖表顯示(2)

前言:

在看本篇的時候,請確認已經看過了html

某android平板項目開發筆記----aChartEngine圖表顯示(1)java

否則,有些地方這裏就再也不說明…android

關於XYMutilpleSeriesDataset 一些注意的地方

  咱們可使用的全部Series對象關係以下圖數據庫

barfina

從圖中,咱們能夠看出,XYMutilpleSeriesDataset 只能添加XYSeries,對於,線性圖而言,咱們須要明確輸入x,y值,這樣問題不是很大,可是,對於條形圖,餅圖,對於x軸的屬性就有點多餘了,對於非線性圖而言,咱們須要的數據僅僅只須要一個值,對於這種狀況,咱們就須要使用一個新的對象,CategorySeries ,由於,咱們繪製的是二維座標圖,全部咱們在添加到XYMutilpleSeriesDataset 時須要把CategorySeries 對象轉換爲二維座標,dom

View or Intent?

在昨天的例子中,我直接構造了一個能夠用於直接顯示的Intent,這樣作雖然,方便,可是,可編輯的地方就很少,例如,我須要在一個屏幕上顯示多個圖表那就無能爲力了.對於這種狀況,咱們須要構造一個View,方法也很簡單,這裏先對比一下,兩種狀況的使用範圍ide

  優勢 缺點

Intent方式顯示圖表佈局

簡單方便,對於單單顯示圖表而言是個不錯的選擇 沒法進行自定義操做

自定義View方式顯示圖表this

能夠在一個屏幕顯示多個圖表,能夠自定義顯示位置 須要進行必定的配置

 

說了這麼多來一個例子吧:請認真看註釋!!!lua

public class BarExActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 1, 構造顯示用渲染圖
		XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
		// 2,進行顯示
		XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
		// 2.1, 建立柱狀圖數據
		Random r = new Random();
		for (int i = 0; i < 2; i++) {
			// 注意,這裏與昨天的XYSeries 有一點不一樣!!這裏使用CategroySeries
			CategorySeries series = new CategorySeries("test" + (i + 1));
			// 填充數據
			for (int k = 0; k < 10; k++) {
				// 直接填入須要顯示的數據,即:Y軸的值
				series.add(Math.abs(20 + r.nextInt() % 100));
			}
			// 這裏要進行轉換
			dataset.addSeries(series.toXYSeries());
		}
		// 3, 對點的繪製進行設置
		XYSeriesRenderer xyRenderer = new XYSeriesRenderer();
		// 3.1設置顏色
		xyRenderer.setColor(Color.BLUE);

		// 3.2設置點的樣式
		// xyRenderer.setPointStyle(PointStyle.SQUARE);
		// 3.3, 將要繪製的點添加到座標繪製中
		renderer.addSeriesRenderer(xyRenderer);
		// 3.4,重複 3.1~3.3的步驟繪製第二組系列點
		xyRenderer = new XYSeriesRenderer();
		xyRenderer.setColor(Color.RED);
		// xyRenderer.setPointStyle(PointStyle.CIRCLE);
		renderer.addSeriesRenderer(xyRenderer);
		// 注意這裏x,y min 不要相同
		// 這裏用一種內置的設置x,y範圍的方法
		//順序是:minX, maxX, minY, maxY
		double[] range = { 0, 10, 1, 200 };
		renderer.setRange(range);
		// 等價於:
		// -------------------
		// renderer.setXAxisMin(0);
		// renderer.setXAxisMax(10);
		// renderer.setYAxisMin(1);
		// renderer.setYAxisMax(200);
		// -------------------
		

		// 設置合適的刻度,在軸上顯示的數量是 MAX / labels
		renderer.setXLabels(10);
		renderer.setYLabels(10);

		// 設置x,y軸顯示的排列,默認是 Align.CENTER
		renderer.setXLabelsAlign(Align.CENTER);
		renderer.setYLabelsAlign(Align.RIGHT);

		// 設置座標軸,軸的顏色
		renderer.setAxesColor(Color.RED);
		// 顯示網格
		renderer.setShowGrid(true);
		// 設置x,y軸上的刻度的顏色
		renderer.setLabelsColor(Color.BLACK);

		// 設置頁邊空白的顏色
		renderer.setMarginsColor(Color.CYAN);
		// 設置是否顯示,座標軸的軸,默認爲 true
		renderer.setShowAxes(true);

		// 設置條形圖之間的距離
		renderer.setBarSpacing(0.1);
		int length = renderer.getSeriesRendererCount();

		for (int i = 0; i < length; i++) {
			SimpleSeriesRenderer ssr = renderer.getSeriesRendererAt(i);
			// 不知道做者的居中是怎麼計算的,默認是Align.CENTER,可是對於兩個以上的條形顯示
			// 就畫在了最右邊
			ssr.setChartValuesTextAlign(Align.RIGHT);
			ssr.setChartValuesTextSize(12);
			ssr.setDisplayChartValues(true);
		}
		// Intent intent = new LinChart().execute(this);
		// Intent intent = ChartFactory
		// .getBarChartIntent(this, dataset, renderer, Type.DEFAULT);
		// startActivity(intent);

		LinearLayout barchart = (LinearLayout) findViewById(R.id.barchart);
		GraphicalView mChartView = ChartFactory.getBarChartView(this, dataset,
				renderer, Type.DEFAULT);

		barchart.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
				LayoutParams.FILL_PARENT));

		// 這裏我偷偷的封裝了一個 折線圖的顯示,用做練習吧!把上一章的例子改成用 view
//		LinChart lineChart = new LinChart();
//		LinearLayout linechart = (LinearLayout) findViewById(R.id.linechart);
//		GraphicalView lineView = lineChart.chartView(this);
//		linechart.addView(lineView, new LayoutParams(LayoutParams.FILL_PARENT,
//				LayoutParams.FILL_PARENT));
	}
}

 

咱們還須要在佈局文件裏面添加:spa

<LinearLayout android:id="@+id/barchart" android:orientation="horizontal"
		android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" />

 

顯示效果:

device-2012-01-18-234840

把昨天的例子也添加進來,顯示效果:

device-2012-01-18-235058

今天就這麼多吧,接下來的日子,我須要設計數據庫,這個aChartEngine 就暫且告一段落了吧…

相關文章
相關標籤/搜索