android 饼状报表的 简化动画 使用简单 注解我基本加上了

来源:互联网 发布:java long转int 编辑:程序博客网 时间:2024/06/08 04:35
package com;
import java.util.ArrayList;
import com.example.piedemo.R;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendPosition;
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.listener.OnChartValueSelectedListener;
import com.github.mikephil.charting.utils.Highlight;
import com.github.mikephil.charting.utils.PercentFormatter;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;


public class MainActivity extends Activity implements OnChartValueSelectedListener{
private PieChart mChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initLayout();
}

private void initLayout(){
mChart=(PieChart) this.findViewById(R.id.chart);
        mChart.setDescription("");
        //中间圆心颜色和大小控制
        mChart.setHoleColorTransparent(true);
        mChart.setHoleColor(Color.BLUE);
        mChart.setHoleRadius(0f);
        mChart.setDrawHoleEnabled(false);
        //触摸滑动控制
        mChart.setRotationAngle(0);
        mChart.setRotationEnabled(true);
        mChart.setOnChartValueSelectedListener(this);
        //中间文字控制
        mChart.setDrawCenterText(true);
        //输入相对的名字
        ArrayList<String> xVals=new ArrayList<String>();
        xVals.add("收入");
        xVals.add("支出");
        //输入百分比数据
        float[] mults={(float) 25.5,(float) 74.5};
        //输入百分比所占区域对应颜色
        ArrayList<Integer> colors=new ArrayList<Integer>();
        colors.add(Color.RED);
        
        
        colors.add(Color.BLUE);
        //将三项的数据填入对应的值段
        setData(xVals, mults, colors);
        //动画旋转速度
        mChart.animateXY(1500, 1500);
        //是否先旋转
//      mChart.spin(2000, 0, 360);
        //控制饼状图输入输出的边块位置
        Legend l = mChart.getLegend();
        l.setPosition(LegendPosition.RIGHT_OF_CHART);
        l.setXEntrySpace(7f);
        l.setYEntrySpace(5f);
}
@Override
public void onNothingSelected() {
// TODO Auto-generated method stub
Log.i("PieChart", "nothing selected");
}
@Override
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
// TODO Auto-generated method stub
if (e == null)
           return;
       Log.i("VAL SELECTED",
               "Value: " + e.getVal() + ", xIndex: " + e.getXIndex()
                       + ", DataSet index: " + dataSetIndex);
}

private void setData(ArrayList<String> xVals,float[] mults,ArrayList<Integer> colors){
ArrayList<Entry> yVals=new ArrayList<Entry>();
//遍历数据
if(mults!=null&&mults.length>0){
for(int i=0;i<mults.length;i++){
yVals.add(new Entry(mults[i], i));
}
}

PieDataSet dataSet=new PieDataSet(yVals, "");
//控制百分比之间的间距
// dataSet.setSliceSpace(3f);
dataSet.setColors(colors);
PieData data = new PieData(xVals, dataSet);
        data.setValueFormatter(new PercentFormatter());
        //设置字体大小
        data.setValueTextSize(12f);
        //设置字体颜色
        data.setValueTextColor(Color.WHITE);
        mChart.setData(data);
        mChart.highlightValues(null);
        mChart.invalidate();
}

}


源码下载我已上传到我的CSND

1 0
原创粉丝点击