Android studio 利用MPAndroidChart制作饼图

mac2024-03-22  27

1.在项目的build.gradle下面的allprojects里面添加 maven { url “https://jitpack.io” } 这行代码

allprojects { repositories { google() jcenter() maven { url "https://jitpack.io" } } }

2.在app的build.gradle添加MPAndroidChart依赖

implementation 'com.github.PhilJay:MPAndroidChart:v3.0.0-beta1'

3.activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <com.github.mikephil.charting.charts.PieChart android:id="@+id/consume_pie1_chart" android:layout_width="520dp" android:layout_height="520dp" /> </LinearLayout>

4.MainActivity.java部分

package com.example.a86156.bingtu; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import com.github.mikephil.charting.animation.Easing; import com.github.mikephil.charting.charts.PieChart; import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.data.PieData; import com.github.mikephil.charting.data.PieDataSet; import com.github.mikephil.charting.data.PieEntry; import com.github.mikephil.charting.formatter.PercentFormatter; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { PieChart pieChart1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pieChart1 = findViewById(R.id.consume_pie1_chart); bingTu1(); } private void bingTu1() { pieChart1.setUsePercentValues(true); //设置为显示百分比 pieChart1.setDescription("当天时间分配表");//设置描述 pieChart1.setDescriptionTextSize(20f); // pieChart1.setExtraOffsets(5, 5, 5, 5);//设置饼状图距离上下左右的偏移量 pieChart1.setDrawCenterText(true); //设置可以绘制中间的文字 pieChart1.setCenterTextColor(Color.BLACK); //中间的文本颜色 pieChart1.setCenterTextSize(18); //设置中间文本文字的大小 pieChart1.setDrawHoleEnabled(true); //绘制中间的圆形 pieChart1.setHoleColor(Color.WHITE);//饼状图中间的圆的绘制颜色 pieChart1.setHoleRadius(40f);//饼状图中间的圆的半径大小 pieChart1.setTransparentCircleColor(Color.BLACK);//设置圆环的颜色 pieChart1.setTransparentCircleAlpha(100);//设置圆环的透明度[0,255] pieChart1.setTransparentCircleRadius(40f);//设置圆环的半径值 pieChart1.setRotationEnabled(false);//设置饼状图是否可以旋转(默认为true) pieChart1.setRotationAngle(10);//设置饼状图旋转的角度 Legend l = pieChart1.getLegend(); //设置比例图 l.setMaxSizePercent(100); l.setTextSize(12); l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART_CENTER);//设置每个tab的显示位置(这个位置是指下图右边小方框部分的位置 ) l.setXEntrySpace(10f); l.setYEntrySpace(5f);//设置tab之间Y轴方向上的空白间距值 l.setYOffset(0f); //饼状图上字体的设置 pieChart1.setDrawEntryLabels(false);//设置是否绘制Label // pieChart1.setEntryLabelColor(Color.BLACK);//设置绘制Label的颜色 pieChart1.setEntryLabelTextSize(23f);//设置绘制Label的字体大小 // pieChart1.animateY(100, Easing.EasingOption.EaseInQuad);//设置Y轴上的绘制动画 //设置数据百分比和描述 ArrayList<PieEntry> pieEntries = new ArrayList<PieEntry>(); pieEntries.add(new PieEntry(15, "游戏")); pieEntries.add(new PieEntry(20, "做家务")); pieEntries.add(new PieEntry(15, "逛街")); pieEntries.add(new PieEntry(30, "上网")); pieEntries.add(new PieEntry(10, "打球")); pieEntries.add(new PieEntry(10, "其他")); String centerText = "时间分配"; pieChart1.setCenterText(centerText);//设置圆环中间的文字 PieDataSet pieDataSet = new PieDataSet(pieEntries, ""); ArrayList<Integer> colors = new ArrayList<>(); // 饼图颜色 colors.add(Color.rgb(0, 255, 0)); colors.add(Color.rgb(255, 255, 0)); colors.add(Color.rgb(255, 0, 0)); colors.add(Color.rgb(255, 0, 255)); colors.add(Color.rgb(244, 164, 96)); colors.add(Color.rgb(30, 144, 255)); pieDataSet.setColors(colors); pieDataSet.setSliceSpace(0f);//设置选中的Tab离两边的距离 pieDataSet.setSelectionShift(5f);//设置选中的tab的多出来的 PieData pieData = new PieData(); pieData.setDataSet(pieDataSet); //各个饼状图所占比例数字的设置 pieData.setValueFormatter(new PercentFormatter());//设置% pieData.setValueTextSize(18f); pieData.setValueTextColor(Color.BLUE); pieChart1.setData(pieData); pieChart1.highlightValues(null); pieChart1.invalidate(); } }
最新回复(0)