binbinyang--3.MPAndroidChart开源图表库---饼状图

首先.给大家看看.我在项目中实现后的动态图



然后直奔主题吧
MPAndroidChart是一款基于Android的开源图表库,MPAndroidChart不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活。MPAndroidChart同样拥有常用的图表类型:线型图、饼图、柱状图和散点图。
GitHub地址:
https://github.com/PhilJay/MPAndroidChart
下面主要实现以下饼状图:

1.有2种方法可以导库包
1.1 第一种是 
compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'

1.2 第二种是 直接导入JAR包



2.定义XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <com.github.mikephil.charting.charts.PieChart
        android:id="@+id/mPieChart"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"/>

</RelativeLayout>

3.把DEMO效果图贴出来



贴代码

MainActivity 代码

public class MainActivity extends Activity {
    private PieChartUtils chartUtil;
    private PieChart mChart;

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

        mChart = (PieChart) findViewById(R.id.mPieChart);
        chartUtil = new PieChartUtils(this);
        PieData mPieData =chartUtil.getPieData(3, 100);
        chartUtil.showChart(mChart, mPieData);
    }


}

我抽取出来的 PieChartUtils

public class PieChartUtils {

    private Context mContext;
    private AssetManager assets;
    private Typeface tf;
    private Resources rs;

    public PieChartUtils(Context context) {
        this.mContext = context;
        assets = mContext.getAssets();
        rs = mContext.getResources();
    }

    void showChart(PieChart pieChart, PieData pieData) {
        pieChart.setHoleColorTransparent(true);

        pieChart.setHoleRadius(60f);  //半径
        pieChart.setTransparentCircleRadius(64f); // 半透明圈
//        pieChart.setHoleRadius(0); //实心圆
        pieChart.setDescription("测试饼状图");
        pieChart.setDrawHoleEnabled(true);
        // mChart.setDrawYValues(true);//设置是否显示y轴的值的数据
        pieChart.setDrawCenterText(true);  //饼状图中间可以添加文字
        pieChart.setDrawHoleEnabled(true);
        pieChart.setRotationAngle(90); // 初始旋转角度
        // mChart.setDrawXValues(true);
        pieChart.setRotationEnabled(true); // 可以手动旋转
        pieChart.animateY(1000, Easing.EasingOption.EaseInOutQuad); //设置动画
        pieChart.setUsePercentValues(true);  //显示成百分比
        pieChart.setCenterText("杨彬 ");  //饼状图中间的文字
        //设置数据
        pieChart.setData(pieData);
        Legend mLegend = pieChart.getLegend();  //设置比例图
        mLegend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);  //最右边显示
//      mLegend.setForm(LegendForm.LINE);  //设置比例图的形状,默认是方形
        mLegend.setXEntrySpace(7f);
        mLegend.setYEntrySpace(5f);
        pieChart.animateXY(1000, 1000);  //设置动画
    }

    /**
     * @param count 分成几部分
     * @param range 百分比
     */
    PieData getPieData(int count, float range) {
        ArrayList<String> xValues = new ArrayList<String>(); // xVals用来表示每个饼块上的内容
        ArrayList<Entry> yValues = new ArrayList<Entry>(); // yVals用来表示封装每个饼块的实际数据
        List<Integer> colors = new ArrayList<Integer>();// 每一块饼上的颜色
        xValues.add(0, "第一块");
        xValues.add(1, "第二块");
        xValues.add(2, "第三块");
        yValues.add(new Entry(5, 0));
        yValues.add(new Entry(10, 1));
        yValues.add(new Entry(15, 2));

        colors.add(Color.rgb(205, 205, 205));
        colors.add(Color.rgb(114, 188, 223));
        colors.add(Color.rgb(255, 123, 124));
//        colors.add(0xffff00ff);
//        colors.add(0xff0000ff);
//        colors.add(0xffffff00);
        // y轴的集合
        PieDataSet pieDataSet = new PieDataSet(yValues, " ");// 显示在比例图上
        pieDataSet.setSliceSpace(0f); // 设置个饼状图之间的距离
        pieDataSet.setSelectionShift(5f);
        pieDataSet.setColors(colors);

        DisplayMetrics metrics = rs.getDisplayMetrics();
        float px = 2 * (metrics.densityDpi / 180f);
        pieDataSet.setSelectionShift(px); // 选中态多出的长度
        PieData pieData = new PieData(xValues, pieDataSet);
        return pieData;
    }

}

如果要去掉百分比的比例图

pieChart.setUsePercentValues(true);  //显示成百分比

这是DEMO代码下载的地方:http://download.csdn.net/detail/yangbin0513/9713311

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值