看网上也有些例子,看着挺有意思。本人之前面试的时候也遇到面试官询问这样的问题,那时候我其实没有清晰的思路,就大体说了下图形绘制过程,需要画笔、画布,设置下各自属性,可以画圆、画弧、画图、画线等。闲话不多说了,直接看看怎么实现的。
效果图:
1.自定义TurnTableView,继承自View.
初始化的地方,主要是设置了下画笔的属性等。
// 初始化数据
private void init(Context context) {
this.context = context;
paint = new Paint();
paint.setColor(Color.RED);// 设置颜色
paint.setAntiAlias(true);// 去除锯齿效果,会消耗较大资源,绘制图形速度会变慢
paint.setDither(true);// 防抖动
paint.setStyle(Paint.Style.STROKE);// 空心
paint.setStrokeWidth(strokeWidth);// 设置空心边框的宽度
paint.setAlpha(100);// 透明度
paint.setARGB(100, 0, 255, 255);// 设置绘制的颜色,a代表透明度,r,g,b代表颜色值。
textPaint = new Paint();
textPaint.setColor(Color.RED);// 设置颜色
textPaint.setTextSize(20);
// 设置下,对于viewgroup能调用onDraw
setWillNotDraw(false);
setKeepScreenOn(true);
}
2.onMeasure()里拿到测量后的控件的宽高值,取最小值为直径radius,并初始化rangeRectF类对象&