package com.lichenhao.piecharttestapp; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.support.v7.app.AppCompatActivity; import android.util.DisplayMetrics; import android.view.View; 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 java.util.ArrayList; public class MainActivity extends AppCompatActivity { private PieChart mPieChart; private Handler mHandler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); mPieChart.setVisibility(View.VISIBLE); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPieChart = (PieChart) findViewById(R.id.pc_main); new Thread(new Runnable() { @Override public void run() { SystemClock.sleep(1000); runOnUiThread(new Runnable() { @Override public void run() { createChart(); showAnimation(); mHandler.sendEmptyMessageDelayed(0,50); } }); } }).start(); } public void openNewActivity(View view) { startActivity(new Intent(this,MainActivity.class)); } public void createChart() { PieData mPieData = getPieData(4, 100); showChart(mPieChart, mPieData); } private void showChart(PieChart pieChart, PieData pieData) { // pieChart.setHoleColorTransparent(true); pieChart.setHoleRadius(60f); //半径 pieChart.setTransparentCircleRadius(64f); // 半透明圈 //pieChart.setHoleRadius(0) //实心圆 pieChart.setDescription("测试饼状图"); Legend legend = pieChart.getLegend(); legend.setEnabled(false); // mChart.setDrawYValues(true); pieChart.setDrawCenterText(true); //饼状图中间可以添加文字 pieChart.setDrawHoleEnabled(true); pieChart.setRotationAngle(90); // 初始旋转角度 // draws the corresponding description value into the slice // mChart.setDrawXValues(true); // enable rotation of the chart by touch pieChart.setRotationEnabled(true); // 可以手动旋转 // display percentage values pieChart.setUsePercentValues(true); //显示成百分比 // mChart.setUnit(" €"); // mChart.setDrawUnitsInChart(true); // add a selection listener // mChart.setOnChartValueSelectedListener(this); // mChart.setTouchEnabled(false); // mChart.setOnAnimationListener(this); pieChart.setCenterText("Quarterly Revenue"); //饼状图中间的文字 //设置数据 pieChart.setData(pieData); // undo all highlights // pieChart.highlightValues(null); // pieChart.invalidate(); // pieChart.animateXY(1000, 1000); //设置动画 // mChart.spin(2000, 0, 360); } public void showAnimation() { mPieChart.animateXY(1000, 1000); } /** * * @param count 分成几部分 * @param range */ private PieData getPieData(int count, float range) { ArrayList<String> xValues = new ArrayList<String>(); //xVals用来表示每个饼块上的内容 for (int i = 0; i < count; i++) { xValues.add("Quarterly" + (i + 1)); //饼块上显示成Quarterly1, Quarterly2, Quarterly3, Quarterly4 } ArrayList<PieEntry> yValues = new ArrayList<PieEntry>(); //yVals用来表示封装每个饼块的实际数据 // 饼图数据 /** * 将一个饼形图分成四部分, 四部分的数值比例为14:14:34:38 * 所以 14代表的百分比就是14% */ float quarterly1 = 14; float quarterly2 = 14; float quarterly3 = 34; float quarterly4 = 38; yValues.add(new PieEntry(quarterly1, 0)); yValues.add(new PieEntry(quarterly2, 1)); yValues.add(new PieEntry(quarterly3, 2)); yValues.add(new PieEntry(quarterly4, 3)); //y轴的集合 PieDataSet pieDataSet = new PieDataSet(yValues, "Quarterly Revenue 2014"/*显示在比例图上*/); pieDataSet.setSliceSpace(0f); //设置个饼状图之间的距离 ArrayList<Integer> colors = new ArrayList<Integer>(); // 饼图颜色 colors.add(Color.rgb(205, 205, 205)); colors.add(Color.rgb(114, 188, 223)); colors.add(Color.rgb(255, 123, 124)); colors.add(Color.rgb(57, 135, 200)); pieDataSet.setColors(colors); DisplayMetrics metrics = getResources().getDisplayMetrics(); float px = 5 * (metrics.densityDpi / 160f); pieDataSet.setSelectionShift(px); // 选中态多出的长度 // PieData pieData = new PieData(xValues, pieDataSet); PieData pieData = new PieData(pieDataSet); return pieData; } }
199_让PieChart出来之后动画
最新推荐文章于 2022-09-03 17:57:00 发布