android柱狀圖和餅狀圖的簡單使用(MPAndroidChart)

MPAndroidChartMPAndroidChart是一個開源的圖標庫,能夠實現各種各樣的效果,自定義比較容易,在項目中有簡單使用,做一個記錄。

1、柱狀圖的簡單使用

效果圖:
這裏寫圖片描述這裏寫圖片描述


1、導包,在這用的是兩個jar包

這裏寫圖片描述

2、xml文件中配置

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.github.mikephil.charting.charts.BarChart
        android:id="@+id/barChart"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp">

    </com.github.mikephil.charting.charts.BarChart>
</LinearLayout>

3、代碼中設置如下:

package com.example.mpchart;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;

import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.utils.ValueFormatter;

import java.util.ArrayList;

/**
 * Created by Administrator on 2016/12/18.
 */
public class BarActivity extends Activity {
    private BarChart barChart;
    private XAxis xAxis;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bar);
        barChart= (BarChart) findViewById(R.id.barChart);
        //1、基本設置
        xAxis=barChart.getXAxis();
        xAxis.setDrawAxisLine(true);
        xAxis.setDrawGridLines(false);
        barChart.setDrawGridBackground(false); // 是否顯示錶格顏色
        barChart.getAxisLeft().setDrawAxisLine(false);
        barChart.setTouchEnabled(false); // 設置是否可以觸摸
        barChart.setDragEnabled(true);// 是否可以拖拽
        barChart.setScaleEnabled(true);// 是否可以縮放
        //2y軸和比例尺

        barChart.setDescription("四個季度");// 數據描述

        barChart.getAxisLeft().setEnabled(false);
        barChart.getAxisRight().setEnabled(false);

        Legend legend = barChart.getLegend();//隱藏比例尺
        legend.setEnabled(false);

        //3x軸數據,和顯示位置
        ArrayList<String> xValues = new ArrayList<String>();
        xValues.add("一季度");
        xValues.add("二季度");
        xValues.add("三季度");
        xValues.add("四季度");

        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//數據位於底部


        //4y軸數據
        ArrayList<BarEntry> yValues = new ArrayList<BarEntry>();
        //new BarEntry(20, 0)前面代表數據,後面代碼柱狀圖的位置;
        yValues.add(new BarEntry(20, 0));
        yValues.add(new BarEntry(18, 1));
        yValues.add(new BarEntry(4, 2));
        yValues.add(new BarEntry(45, 3));

        //5、設置顯示的數字爲整形
        BarDataSet barDataSet=new BarDataSet(yValues,"");
        barDataSet.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float v) {
                int n = (int) v;
                return n + "";
            }
        });
        //6、設置柱狀圖的顏色
        barDataSet.setColors(new int[]{Color.rgb(104, 202, 37), Color.rgb(192, 32, 32),
                Color.rgb(34, 129, 197), Color.rgb(175, 175, 175)});
        //7、顯示,柱狀圖的寬度和動畫效果
        BarData barData = new BarData(xValues, barDataSet);
        barDataSet.setBarSpacePercent(40f);//值越大,柱狀圖就越寬度越小;
        barChart.animateY(1000);
        barChart.setData(barData); //



    }
}

2、餅狀圖

package com.example.mpchart;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.DisplayMetrics;

import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.utils.PercentFormatter;

import java.util.ArrayList;

/**
 * Created by Administrator on 2016/12/18.
 */
public class PieActivity extends Activity {
    private PieChart pieChart;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pie);
        pieChart = (PieChart) findViewById(R.id.pie_chart);
        //1、基本設置
        pieChart.setDrawCenterText(false);  //餅狀圖中間文字不顯示
        pieChart.setDescription("");
        pieChart.setDrawHoleEnabled(false);    //設置實心
        pieChart.setRotationAngle(90); // 初始旋轉角度

        //2、添加數據
        ArrayList<String> xValues = new ArrayList<String>();  //xVals用來表示每個餅塊上的內容
        xValues.add("this is one");
        xValues.add("this is two");
        xValues.add("this is three");
        xValues.add("this is four");

        ArrayList<Entry> yValues = new ArrayList<Entry>();
        yValues.add(new Entry(10, 0));
        yValues.add(new Entry(3, 1));
        yValues.add(new Entry(23, 2));
        yValues.add(new Entry(56, 3));
        //3y軸數據
        PieDataSet pieDataSet = new PieDataSet(yValues, ""/*顯示在比例圖上*/);
        pieDataSet.setSliceSpace(0f); //設置個餅狀圖之間的距離
        //4、設置顏色
        ArrayList<Integer> colors = new ArrayList<Integer>();
        colors.add(Color.rgb(205, 205, 205));
        colors.add(Color.rgb(114, 188, 223));
        colors.add(Color.rgb(255, 123, 124));
        colors.add(Color.rgb(57, 135, 200));
        pieDataSet.setColors(colors);
        //5、 設置數據
        PieData pieData = new PieData(xValues, pieDataSet);
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        float px = 5 * (metrics.densityDpi / 160f);
        pieDataSet.setSelectionShift(px); // 選中態多出的長度
        pieData.setValueFormatter(new PercentFormatter());//顯示百分比
        //6、去掉比例尺和說明
        Legend legend = pieChart.getLegend();//下標說明,false
        legend.setEnabled(false);
        pieChart.setDescription("");

        //7、顯示百分比
        pieData.setValueFormatter(new PercentFormatter());

        //8、顯示
        pieChart.setData(pieData);
    }
}

demo下載(as)地址
http://download.csdn.net/detail/androidxiaogang/9714452

發佈了142 篇原創文章 · 獲贊 265 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章