Android 自定义环形圆形显示统计数据z

1、添加依赖包

compile 'org.xclcharts:lib:2.4'

自定义view

/**
 * @author meixi<br               />([email protected])
 * @ClassName CircleChart02View
 * @Description 图形图例子、半圆
 */
public class CircleChart02View extends GraphicalView {

    private String TAG = "CircleChart02View";
    private CircleChart chart = new CircleChart();

    //设置图表数据源
    private LinkedList<PieData> mlPieData = new LinkedList<PieData>();
    private String mDataInfo = "";

    public CircleChart02View(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        setPercentage(0);
        chartRender();
    }

    public CircleChart02View(Context context, AttributeSet attrs) {
        super(context, attrs);
        setPercentage(0);
        chartRender();
    }

    public CircleChart02View(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setPercentage(0);
        chartRender();
    }


    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        //图所占范围大小
        chart.setChartRange(w, h);
    }


    public void chartRender() {
        try {
            //设置信息
            chart.setAttributeInfo(mDataInfo);
            chart.getDataInfoPaint().setTextSize(30f);
            //数据源
            chart.setDataSource(mlPieData);

            chart.getLabelPaint().setColor(Color.rgb(72, 201, 176));//百分比颜色

            chart.setIRadius(0.8f);//轨迹内圆半径
//            chart.hideInnerFill();//是否满圆

            //半圆方式显示,不用则是圆方式显示
            chart.setCircleType(XEnum.CircleType.HALF);

            chart.getFillCirclePaint().setColor(Color.BLUE);//内圆色

            //背景色
            chart.getBgCirclePaint().setColor(Color.YELLOW);
            //深色
//            chart.getFillCirclePaint().setColor(Color.YELLOW);
            chart.setInitialAngle(90);
            //信息颜色
            chart.getDataInfoPaint().setColor(Color.RED);
            //显示边框
            chart.showRoundBorder();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            Log.e(TAG, e.toString());
        }
    }

    //百分比
    public void setPercentage(int per) {
        //PieData(标签,百分比,在饼图中对应的颜色)
        mlPieData.clear();
        int color = Color.rgb(72, 201, 176);
        if (per < 40) {
            mDataInfo = "容易容易";
        } else if (per < 60) {
            mDataInfo = "严肃认真";
            color = Color.rgb(246, 202, 13);
        } else {
            mDataInfo = "压力山大";
            color = Color.rgb(243, 75, 125);
        }
        mlPieData.add(new PieData(Integer.toString(per) + "%", per, color));

    }

    @Override
    public void render(Canvas canvas) {
        try {
            chart.render(canvas);
        } catch (Exception e) {
            Log.e(TAG, e.toString());
        }
    }
    
}
 
 
<clan.yuanxin.com.mydaifa.pictures.CircleChart02View
    android:id="@+id/circle_view"
    android:layout_width="200dip"
    android:layout_height="200dip"
    android:layout_gravity="center_vertical|left"
    />

java代码


 //圆
CircleChart02View chart = null;
chart = (CircleChart02View)findViewById(R.id.circle_view);

显示数据

chart.setPercentage(progress);//20
chart.chartRender();
chart.invalidate();

猜你喜欢

转载自blog.csdn.net/meixi_android/article/details/81026508