Android 饼图的简易化
Java代码
package com.example.it.myapplication;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.InputFilter;
import android.util.DisplayMetrics;
import android.widget.TextView;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import java.util.ArrayList;
import java.util.List;
public class Main2Activity extends AppCompatActivity {
private PieChart pieChart;
private TextView txt1;
private TextView txt2;
private TextView txt3;
private TextView txt4;
//颜色集合
private List<Integer> colors;
//内容集合
private List<String> contents;
//数据值集合
private List<Float> arrayList;
//比例集合
private List<Entry> bili;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
pieChart=findViewById(R.id.bt);
txt1=findViewById(R.id.txt1);
txt2=findViewById(R.id.txt2);
txt3=findViewById(R.id.txt3);
txt4=findViewById(R.id.txt4);
PieData pieData=getPieData(4,100);
show(pieData,pieChart);
}
//设置常见的集合属性
private PieData getPieData(int count,float range)
{
colors=new ArrayList<Integer>();
colors.add(Color.rgb(200,150,200));
colors.add(Color.rgb(200,120,200));
colors.add(Color.rgb(200,130,200));
colors.add(Color.rgb(200,100,200));
contents=new ArrayList<String>();
contents.add("大巴");
contents.add("火车");
contents.add("器材");
contents.add("历史");
float m1=100;
float m2=200;
float m3=300;
float m4=400;
arrayList=new ArrayList<Float>();
arrayList.add(m1);
arrayList.add(m2);
arrayList.add(m3);
arrayList.add(m4);
runOnUiThread(new Runnable(){
@Override
public void run() {
txt1.setText(contents.get(0)+":"+arrayList.get(0));
txt2.setText(contents.get(1)+":"+arrayList.get(1));
txt3.setText(contents.get(2)+":"+arrayList.get(2));
txt4.setText(contents.get(3)+":"+arrayList.get(3));
}
});
bili=new ArrayList<>();
bili.add(new Entry(m1,0));
bili.add(new Entry(m2,1));
bili.add(new Entry(m3,2));
bili.add(new Entry(m4,3));
PieDataSet pieDataSet=new PieDataSet(bili,null);
//设置饼图的间距
pieDataSet.setSliceSpace(0f);
//设置饼图的颜色
pieDataSet.setColors(colors);
//设置饼图选中后的变长
DisplayMetrics metrics=getResources().getDisplayMetrics();
float fd=(metrics.densityDpi/160)*5;
pieDataSet.setSelectionShift(fd);
PieData pieData=new PieData(contents,pieDataSet);
return pieData;
}
//设置pieData的一些特效
private void show(PieData pieData,PieChart pieChart)
{
pieChart.setTransparentCircleRadius(64f);
pieChart.setHoleRadius(60f);
//添加右下备注
pieChart.setDescription("");
//添加文字 在饼图之中
pieChart.setDrawCenterText(true);
pieChart.setDrawHoleEnabled(true);
//设置旋转的初始角度 sRA
pieChart.setRotationAngle(90);
//可以手动旋转的开启 sRE
pieChart.setRotationEnabled(true);
//显示百分比的开启 sUPV
pieChart.setUsePercentValues(true);
//饼图中文字的显示 sCT
pieChart.setCenterText("Dow Store");
//设置数据 sDa
pieChart.setData(pieData);
//设置饼图
Legend mLegend=pieChart.getLegend();
mLegend.setXEntrySpace(7f);
mLegend.setYEntrySpace(5f);
pieChart.animateXY(1000, 1000); //设置动画
}
}
layout代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".Main2Activity"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<com.github.mikephil.charting.charts.PieChart
android:layout_width="250dp"
android:layout_height="250dp"
android:id="@+id/bt"
android:layout_marginTop="20dp"
>
</com.github.mikephil.charting.charts.PieChart>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="111"
android:id="@+id/txt1"
android:layout_marginTop="20dp"
android:textSize="20dp"
android:padding="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="111"
android:id="@+id/txt2"
android:layout_marginTop="20dp"
android:textSize="20dp"
android:padding="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="111"
android:id="@+id/txt3"
android:layout_marginTop="20dp"
android:textSize="20dp"
android:padding="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="111"
android:id="@+id/txt4"
android:layout_marginTop="20dp"
android:textSize="20dp"
android:padding="5dp"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
架包: