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

fmms 13年前發布 | 38K 次閱讀 Android Android開發 移動開發 aChartEngine

前言:

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

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

不然,有些地方這里就不再說明…

關于XYMutilpleSeriesDataset 一些注意的地方

  我們可以使用的所有Series對象關系如下圖

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

從圖中,我們可以看出,XYMutilpleSeriesDataset 只能添加XYSeries,對于,線性圖而言,我們需要明確輸入x,y值,這樣問題不是很大,但是,對于條形圖,餅圖,對于x軸的屬性就有點多余了,對于非線性圖而言,我們需要的數據僅僅只需要一個值,對于這種情況,我們就需要使用一個新的對象,CategorySeries ,因為,我們繪制的是二維坐標圖,所有我們在添加到XYMutilpleSeriesDataset 時需要把CategorySeries 對象轉換為二維坐標,

View or Intent?

在昨天的例子中,我直接構造了一個可以用于直接顯示的Intent,這樣做雖然,方便,但是,可編輯的地方就不多,例如,我需要在一個屏幕上顯示多個圖表那就無能為力了.對于這種情況,我們需要構造一個View,方法也很簡單,這里先對比一下,兩種情況的使用范圍

  優點 缺點

Intent方式顯示圖表

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

自定義View方式顯示圖表

可以在一個屏幕顯示多個圖表,可以自定義顯示位置 需要進行一定的配置

 

說了這么多來一個例子吧:請認真看注釋!!!

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)); } }</pre>

 

我們還需要在布局文件里面添加:

 

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

顯示效果:

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

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

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

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

</blockquote> 轉自: http://www.cnblogs.com/youxilua/archive/2012/01/18/2325132.html

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!