看到一加OS 上的表盘不错,所以仿写一个同时复习一下自定义View的内容。
分析表盘结构
一个圆形白色表盘,12个刻度点,3个指针,一个中心点,一个当前时间指示点。
采用何种绘制方案
很简单,直接覆写onDraw 方法 ,在canvas 上绘制内容即可,都是最基本的canvas API 绘制操作,绘制过程都是基本的API调用。
- 画线
public void drawLine(float startX, float startY, float stopX, float stopY,
@NonNull Paint paint)
- 画点
public void drawPoint(float x, float y, @NonNull Paint paint)
- 画圆
public void drawCircle(float cx, float cy, float radius, @NonNull Paint paint)
- 操作画布
平移画布
public void translate(float dx, float dy)
旋转画布
public void rotate(float degrees)
结合平移和旋转操作让简化坐标计算。
让钟表动起来
基本Handler操作,每隔一秒执行一次重绘操作。
注意点:自动开启/停止绘制操作的时机选在View的 onAttachedToWindow/onDetachedFromWindow
回调中,简化使用。
完整代码
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import androi