先看下最终的效果
开始实现
新建一个DoughnutView继承View
public class DoughnutView extends View {
}
先重写onMeasure
方法,为什么要重写onMeasure
方法可以看我的上一篇文章,点这里
/**
* 当布局为wrap_content时设置默认长宽
*
* @param widthMeasureSpec
* @param heightMeasureSpec
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(measure(widthMeasureSpec), measure(heightMeasureSpec));
}
private int measure(int origin) {
int result = DEFAULT_MIN_WIDTH;
int specMode = MeasureSpec.getMode(origin);
int specSize = MeasureSpec.getSize(origin);
if (specMode == MeasureSpec.EXACTLY) {
result = specSize;
} else {
if (specMode == MeasureSpec.AT_MOST) {
result = Math.min(result, specSize);
}
}
return result;
}
下面就是最重要的重写onDraw
方法,大致流程如下
画白色圆环(背景),记得改下Activity背景色不然白色圆环看不出来。
//画背景白色圆环 initPaint(); float