实现饼状图的步骤
1. 引入依赖
为了使用MPAndroidChart库,我们需要在项目的build.gradle文件中添加以下依赖项:
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
2. 添加饼状图视图
在布局文件中添加一个PieChart
视图,用于显示饼状图:
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/pieChart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3. 准备数据
为了显示饼状图,我们需要准备一些数据。数据可以是任何格式,只要能表示各个部分的值和标签即可。例如,我们可以使用一个ArrayList<Entry>
来表示每个部分的值,再使用一个ArrayList<String>
来表示每个部分的标签。
ArrayList<Entry> entries = new ArrayList<>();
ArrayList<String> labels = new ArrayList<>();
// 添加示例数据
entries.add(new Entry(25f, 0));
entries.add(new Entry(35f, 1));
entries.add(new Entry(40f, 2));
labels.add("部分1");
labels.add("部分2");
labels.add("部分3");
4. 设置饼状图属性
在代码中找到对应的PieChart
视图,并设置一些基本属性:
PieChart pieChart = findViewById(R.id.pieChart);
pieChart.setUsePercentValues(true); // 是否使用百分比显示
pieChart.getDescription().setEnabled(false); // 隐藏描述
pieChart.setExtraOffsets(5, 10, 5, 5); // 设置偏移量
pieChart.setDragDecelerationFrictionCoef(0.95f); // 减速摩擦系数
5. 创建饼状图数据集
使用准备好的数据创建一个PieDataSet
对象:
PieDataSet pieDataSet = new PieDataSet(entries, "饼状图数据");
6. 设置饼状图数据集属性
设置PieDataSet
的各种属性,例如颜色、标签等:
pieDataSet.setSliceSpace(3f); // 扇形之间的间隔
pieDataSet.setSelectionShift(5f); // 选中时的偏移
pieDataSet.setColors(ColorTemplate.COLORFUL_COLORS); // 设置颜色
7. 创建饼状图数据
使用PieDataSet
创建一个PieData
对象:
PieData pieData = new PieData(pieDataSet);
8. 设置饼状图数据属性
设置PieData
的各种属性,例如标签显示方式、文字颜色等:
pieData.setValueTextSize(10f); // 标签文字大小
pieData.setValueTextColor(Color.YELLOW); // 标签文字颜色
9. 设置饼状图属性
最后,将准备好的PieData
对象设置给PieChart
视图,并设置一些其他属性:
pieChart.setData(pieData);
pieChart.highlightValues(null); // 取消高亮显示
pieChart.invalidate(); // 刷新图表
完整代码
import android.graphics.Color;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.github.mikephil.charting.charts.PieChart;
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.ColorTemplate;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<Entry> entries = new ArrayList<>();
ArrayList<String> labels = new ArrayList<>();
entries.add(new Entry(25f, 0));
entries.add(new Entry(35f, 1));
entries.add(new Entry(40f, 2));
labels.add("部分1");
labels.add("部分2");
labels.add("部分3");
PieChart pieChart = findViewById(R.id.pieChart);
pieChart.setUsePercentValues(true);
pieChart.getDescription().setEnabled(false);
pieChart.setExtraOffsets(5, 10, 5, 5);
pieChart.setDragDecelerationFrictionCoef(0.95f);
PieDataSet pieDataSet = new PieDataSet(entries, "饼状图数据");
pieDataSet.set