效果图:
第一步:需要导入我们第三方 jar包,这个可以直接加我q,我免费给你们就好了。
qq: 1787424177
第二步:拿到 jar包后,我们需要把这个 jar包放到我们的项目/app/libs 文件夹里面
第三步:配置 bulid.gradle,添加如下代码,记得要点击一下 Sync Now:
implementation files(‘libs/MPAndroidChart-v3.0.3.jar’)
完成以上三步,就可以直接上手敲代码啦!
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/mPieChart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"></com.github.mikephil.charting.charts.PieChart>
</RelativeLayout>
MainActivity.java:
public class MainActivity extends AppCompatActivity {
private PieChart mPieChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView(); //设置画图的基础属性
initData(); //设置数据
}
private void initData() {
//创建数据源
ArrayList<PieEntry> pieEntries = new ArrayList<>();
pieEntries.add(new PieEntry(20.00f, "停车费"));
pieEntries.add(new PieEntry(10.00f, "过路费"));
pieEntries.add(new PieEntry(30.00f, "油费"));
pieEntries.add(new PieEntry(40.00f, "罚款"));
//数据源设置
PieDataSet pieDataSet = new PieDataSet(pieEntries, "");
/**
* 绘制外接线显示值(已注释)以下所示:
*/
// pieDataSet.setValueLinePart1Length(1.0f);
// pieDataSet.setValueLinePart2Length(0.1f);
// pieDataSet.setValueLinePart1OffsetPercentage(100f);
// pieDataSet.setValueLineColor(Color.GRAY);
// pieDataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
// pieDataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
/**
* 设置百分比格式(小数点后保留二位):new PercentFormatter()
*/
pieDataSet.setValueFormatter(new IValueFormatter() {
@Override
public String getFormattedValue(float v, Entry entry, int i, ViewPortHandler viewPortHandler) {
DecimalFormat decimalFormat = new DecimalFormat("0.00");//保留两位小数
String str = decimalFormat.format(v);
return str;
}
});
pieDataSet.setValueTextSize(18f);//值的字体大小
pieDataSet.setValueTextColor(Color.WHITE);//值的颜色
pieDataSet.setSelectionShift(6f);//点击弹出的距离(设置为0可不弹出)
pieDataSet.setSliceSpace(3f);//扇形之间的间隙
ArrayList<Integer> colors = new ArrayList<>();
//颜色组合自己选(LIBERTY_COLORS或COLORFUL_COLORS...)
for (int c : ColorTemplate.LIBERTY_COLORS) {
colors.add(c);
}
pieDataSet.setColors(colors);
Legend legend = mPieChart.getLegend();
legend.setForm(Legend.LegendForm.SQUARE);//正方形比例
legend.setTextSize(12f);
legend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART_CENTER);//图表右中心
/**
* 装配数据
*/
PieData pieData = new PieData(pieDataSet);
mPieChart.setData(pieData);
mPieChart.notifyDataSetChanged();
mPieChart.invalidate();
}
private void initView() {
/**
* 饼状图表(基本属性设置)
*/
mPieChart = findViewById(R.id.mPieChart);
mPieChart.getDescription().setEnabled(false);//没有描述
mPieChart.setNoDataText("加载中...");//加载数据时显示
mPieChart.setDrawHoleEnabled(false);//不绘制内圆(实心圆)
mPieChart.setUsePercentValues(true);//使用百分比值
mPieChart.setRotationEnabled(false);//不可手动旋转
mPieChart.setRotationAngle(0f);//绘制的时候,图表旋转角度。例如:-90f
mPieChart.setTouchEnabled(true);//可以点击
mPieChart.setExtraOffsets(30f, 30f, 15f, 30f);//设置左上右下间距
mPieChart.animateXY(1500, 1500);//动画
}
}
点击运行即可,记得如果找不到这个jar包,直接加我qq免费领取就可以了!
q:1787424177