AChartEngine應用之BarChart(動態直條圖),achartengine

來源:互聯網
上載者:User

AChartEngine應用之BarChart(動態直條圖),achartengine
 AChartEngine應用之BarChart(動態直條圖)

      構建動態直條圖,官方的API並沒有提供可以借鑒的動態直條圖的方法,考慮到資料都是活動的,不可能總是用待用資料,具體是通過定時器+Handler實現定時任務,通過Handler更新主線程UI,在更新之前要把之前的資料清除掉,否則那些資料都會被載入,最後重新繪製動態直條圖,構建動態直條圖的步驟主要分為以下四步,還需要在項目中引入AChartEngine依賴jar包,在Manifest中添加<activityandroid:name="org.achartengine.GraphicalActivity" />。

1.設定XYMultipleSeriesRenderer

private void mRendererSetting() {
        mRenderer = new XYMultipleSeriesRenderer();
        mRenderer.setAxisTitleTextSize(16);
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(15);
        mRenderer.setLegendTextSize(15);
        mSeriesRenderer = new SimpleSeriesRenderer();
        mSeriesRenderer.setColor(PieChartBuilder.getRandomColor());
        mRenderer.addSeriesRenderer(mSeriesRenderer);
        setChartSettings(mRenderer, "直條圖樣本", "月份", "數量", 0.5, 12.5, 0, 2400,
                Color.GRAY, Color.LTGRAY);// 設定直條圖標題,橫軸(X軸)、縱軸(Y軸)、最小的伸所刻度、最大的伸所刻度
//        mRenderer.getSeriesRendererAt(0).setDisplayChartValues(true);// 在第0條直條圖上顯示資料
        mRenderer.setDisplayChartValues(true);
        mRenderer.setXLabels(12);
        mRenderer.setYLabels(10);
        mRenderer.setXLabelsAlign(Align.LEFT);// 資料從左至右顯示
        mRenderer.setYLabelsAlign(Align.LEFT);
        mRenderer.setPanEnabled(true, false);
        mRenderer.setZoomEnabled(true);
        mRenderer.setZoomButtonsVisible(true);// 顯示放大縮小功能按鈕
        mRenderer.setZoomRate(1.1f);
        mRenderer.setBarSpacing(0.5f);// 直條圖間隔
        
    }

2.構建資料來源CategorySeries

/**
     * 更新資料,直條圖顏色
     */
    private void updateChart() {
        Log.i("qiuzhping", " updateChart ok ");
        mDataset.clear();
        mCategorySeries.clear();
        mRenderer.removeSeriesRenderer(mSeriesRenderer);
        mSeriesRenderer = new SimpleSeriesRenderer();
        mSeriesRenderer.setColor(PieChartBuilder.getRandomColor());
        mRenderer.addSeriesRenderer(mSeriesRenderer);
        Random random = new Random();
        int R = random.nextInt(255);
        double[] v = new double[] { R+1423, R+1230, R+1424, R+1524, R+1590, R+1920, R+2203,
                R+2120, R+1950, R+1550, R+1260, R+1400 };
        int seriesLength = v.length;
        for (int k = 0; k < seriesLength; k++) {
            mCategorySeries.add(v[k]);
        }
        mRenderer.setDisplayChartValues(true);
        mDataset.addSeries(mCategorySeries.toXYSeries());
        mChartView.repaint();
    }

3.通過ChartFactory擷取餅圖
mChartView = ChartFactory.getBarChartView(context, mDataset, mRenderer,
                Type.DEFAULT);
        mRenderer.setClickEnabled(true);

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

4.構建定時器任務

mHandler = new Handler() {// 這裡的Handler執行個體將配合下面的Timer執行個體,完成定時更新圖表的功能
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 1) {
                    updateChart();// 重新整理圖表具體方法 Handler將此併入主線程
                }
                super.handleMessage(msg);
            }    
        };
        TimerTask task = new TimerTask() {
            @Override
            public void run() {// 通過訊息更新
                Log.i("qiuzhping", " task ok ");
                Message message = new Message();
                message.what = 1;// 訊息定義標誌
                mHandler.sendMessage(message);
            }
        };

        timer.schedule(task, 500, 1000 * 10);// 執行任務


對應demo:安卓實現AChartEngine+動態餅圖+直條圖 :http://download.csdn.net/detail/qiu_11/8136467

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.