利用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