利用Android開源圖表庫MPAndroidChart實現柱形圖

npde 9年前發布 | 56K 次閱讀 Android開發 移動開發 MPAndroidChart

1. 將mpandroidchartlibrary-2-0-8.jar包copy到項目的libs中

2. 定義xml文件


3.  主要Java邏輯代碼如下,注釋已經都添加上了。

import java.util.ArrayList;

import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendForm;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.XAxis.XAxisPosition;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;

import android.support.v7.app.ActionBarActivity;
import android.graphics.Color;
import android.os.Bundle;

public class MainActivity extends ActionBarActivity {

private BarChart mBarChart;  
private BarData mBarData;  

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  

    mBarChart = (BarChart) findViewById(R.id.spread_bar_chart);  
    mBarData = getBarData(4, 100);  
    showBarChart(mBarChart, mBarData);  
}  

private void showBarChart(BarChart barChart, BarData barData) {  
    barChart.setDrawBorders(false);  ////是否在折線圖上添加邊框   

    barChart.setDescription("");// 數據描述      

    // 如果沒有數據的時候,會顯示這個,類似ListView的EmptyView      
    barChart.setNoDataTextDescription("You need to provide data for the chart.");      

    barChart.setDrawGridBackground(false); // 是否顯示表格顏色      
    barChart.setGridBackgroundColor(Color.WHITE & 0x70FFFFFF); // 表格的的顏色,在這里是是給顏色設置一個透明度      

    barChart.setTouchEnabled(true); // 設置是否可以觸摸      

    barChart.setDragEnabled(true);// 是否可以拖拽      
    barChart.setScaleEnabled(true);// 是否可以縮放      

    barChart.setPinchZoom(false);//       

// barChart.setBackgroundColor();// 設置背景

    barChart.setDrawBarShadow(true);  

    barChart.setData(barData); // 設置數據      

    Legend mLegend = barChart.getLegend(); // 設置比例圖標示  

    mLegend.setForm(LegendForm.CIRCLE);// 樣式      
    mLegend.setFormSize(6f);// 字體      
    mLegend.setTextColor(Color.BLACK);// 顏色      

// X軸設定
// XAxis xAxis = barChart.getXAxis();
// xAxis.setPosition(XAxisPosition.BOTTOM);

    barChart.animateX(2500); // 立即執行的動畫,x軸    
}  

private BarData getBarData(int count, float range) {  
    ArrayList<String> xValues = new ArrayList<String>();  
    for (int i = 0; i < count; i++) {  
        xValues.add("第" + (i + 1) + "季度");  
    }  

    ArrayList<BarEntry> yValues = new ArrayList<BarEntry>();  

    for (int i = 0; i < count; i++) {      
        float value = (float) (Math.random() * range/*100以內的隨機數*/) + 3;  
        yValues.add(new BarEntry(value, i));      
    }  

    // y軸的數據集合      
    BarDataSet barDataSet = new BarDataSet(yValues, "測試餅狀圖");   

    barDataSet.setColor(Color.rgb(114, 188, 223));  

    ArrayList<BarDataSet> barDataSets = new ArrayList<BarDataSet>();      
    barDataSets.add(barDataSet); // add the datasets      

    BarData barData = new BarData(xValues, barDataSets);  

    return barData;  
}  

} </pre>

效果圖如下:



來自:http://blog.csdn.net/shineflowers/article/details/44701645

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