您的位置:首页 > 移动开发 > Android开发

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

2016-12-16 14:49 330 查看

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






然后直奔主题吧
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: