前期插件那些准备和折线图一样
hellocharts图表插件—折线图 - An_nA的博客 - 优快云博客 http://blog.youkuaiyun.com/an_nal/article/details/76147185
查看了一些大神的帖子,学习了很多:
HelloChart–PieChartView(饼图) - 简书 http://www.jianshu.com/p/1498ac6c9f92
弄出来的效果图为:
不废话,直接上代码了:
1.布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<lecho.lib.hellocharts.view.PieChartView
android:id="@+id/piechart"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</lecho.lib.hellocharts.view.PieChartView>
</LinearLayout>
2.activity代码:
public class PieChartActivity extends AppCompatActivity {
@BindView(R.id.piechart)
PieChartView piechart;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_piechart);
ButterKnife.bind(this);
//为piechart设置属性
ViewGroup.LayoutParams layoutParams = piechart.getLayoutParams();
layoutParams.height = AppUtil.dp2px(this, 180) ;
layoutParams.width = AppUtil.getScreenWidth(this);
piechart.setLayoutParams(layoutParams);//设置宽高
piechart.setViewportCalculationEnabled(true);//设置饼图自动适应大小
piechart.setChartRotationEnabled(false);//设置饼图是否可以手动旋转
//实例化PieChartData对象
final PieChartData pd = new PieChartData();
pd.setHasLabelsOutside(false);//设置饼图外面是否显示值
pd.setHasCenterCircle(true);//设置饼图中间是否有第二个圈
pd.setCenterCircleColor(getResources().getColor(R.color.colorWhite));//设置饼图中间圈的颜色
pd.setCenterCircleScale(0.7f);设置第二个圈的大小比例
Typeface typeface = Typeface.create("typeface", Typeface.BOLD_ITALIC);//设置文本字体,BOLD_ITALIC粗斜体
pd.setCenterText1Typeface(typeface);
pd.setCenterText1Color(getResources().getColor(R.color.colorPrimary));
pd.setCenterText1FontSize(16);
//pd.setCenterText1("总投诉事项");
pd.setCenterText2Color(getResources().getColor(R.color.colorRed));
pd.setCenterText2FontSize(16);
pd.setValueLabelsTextColor(Color.BLACK);//设置显示值的字体颜色
//pd.setSlicesSpacing(int sliceSpacing);//设置数据间的间隙
//pd.setHasLabelsOnlyForSelected(true);//设置当值被选中才显示
//pd.hasLabelsOutside();
pd.setHasLabels(false);
pd.setValueLabelsTextColor(getResources().getColor(R.color.colorWhite));
//初始化饼图数据 new SliceValue(float value, int color).setLabel(String label)
final List<SliceValue> sliceList = new ArrayList<SliceValue>();
for( int i = 1; i <= 10 ; i++){
sliceList.add(new SliceValue( i,getResources().getColor(R.color.pie_normal)).setLabel( String.valueOf( i) + "没有名字"));
}
pd.setValues(sliceList);//为饼图添加数据
piechart.setPieChartData(pd);//为饼图设置数据
//将第一个不为0值默认选中()
SliceValue defaultValue = sliceList.get(0);
defaultValue.setColor(getResources().getColor(R.color.pie_selected));
if( defaultValue.getValue() < 0 ){
pd.setCenterText1("0 没有名字");
pd.setCenterText2((int) defaultValue.getValue() + "项");
}else{
pd.setCenterText1(String.valueOf(defaultValue.getLabel()));
pd.setCenterText2((int) defaultValue.getValue() + "项");
}
piechart.startDataAnimation();
//为饼图添加触屏相应事件
piechart.setOnValueTouchListener(new PieChartOnValueSelectListener() {
@Override
public void onValueSelected(int i, SliceValue sliceValue) {
for (int j = 0; j < sliceList.size(); j++) {
if (i == j) {
sliceList.get(j).setColor(getResources().getColor(R.color.pie_selected));
} else {
sliceList.get(j).setColor(getResources().getColor(R.color.pie_normal));
}
}
pd.setCenterText1(String.valueOf(sliceList.get(i).getLabel()));
pd.setCenterText2((int) sliceList.get(i).getValue() + "项");
piechart.startDataAnimation();
}
@Override
public void onValueDeselected() {
}
});
}
}