项目需求实现一个百分比占比的圆环view.刚开始想的就是自定义一个圆环view ,使用圆角画笔,实现圆角效果。整体的效果先看一下设计图效果。
空数据的默认效果,以及单一项数据的效果(整体占比圆环用数据的默认颜色)
根据每个元素的占比画百分比圆环效果,实现思路就是根据每个元素的占比计算一个整体圆360度的百分比画圆弧。实现思路: 用360度减去每个数据占比的空隙,在均分剩下的度数,求每个数据的占比。
下面是实现代码逻辑
public class RingStatisticsView extends View { private final String TAG = this.getClass().getSimpleName(); private List<RingBean> ringBeanList = new ArrayList<RingBean>(); private static int DEFAULT_RINGWIDTH = 8; private float mRingWidth = 0; private float numTextSize = 0; private Canvas mCanvas; private Paint mRingPaint; private RectF mRectF; private float mRadius; //是否是空布局 private boolean isEmpty = false; private Paint mEmptyPaint; private Context mContext; public RingStatisticsView(Context context) { super(context); initSize(context); this.mContext = context; init(); } public RingStatisticsView(Context context, AttributeSet attrs) { super(context, attrs); initAttr(context, attrs); initSize(context); this.mContext = context; init(); } public RingStatisticsView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAt