我模仿刻度线的做法,先写一个数字,然后旋转画布,但是数字与刻度线之间的距离各不相同。不如6离刻度线的距离大于12到刻度线之间的距离

private void drawNum(Canvas canvas) {
    Log.d(TAG, "drawNum()");
    int radius = (int) (mWidth / 2f);
    //写数字
    canvas.save();
    mScalePaint.setStrokeWidth(1);
    mScalePaint.setStyle(Paint.Style.FILL);
    mScalePaint.setTextAlign(Paint.Align.CENTER);
    for (int i = 0; i < 60; i++) {
        //下笔
        if (i % 5 == 0) {
            mScalePaint.setTypeface(Typeface.DEFAULT_BOLD);
            drawNumber(canvas, radius, i, 20, 0.2f, i == 0 ? "12" : i / 5 + "");
            Log.d(TAG, "radius  " + radius + " i " + i);
        } else {
            mScalePaint.setTypeface(Typeface.DEFAULT);
            drawNumber(canvas, radius, i, 14, 0.12f, i + "");
        }
        //滚动
        canvas.rotate(6, radius, radius);
    }
    canvas.restore();
}
private void drawNumber(Canvas canvas, int radius, int i, int i2, float v, String s) {
    //画起来不准确
    mScalePaint.setTextSize(SizeUtils.dip2px(i2));
    canvas.translate(radius, v * radius);
    canvas.rotate(-i * 6);
    canvas.drawText(s, 0, 0, mScalePaint);
    canvas.rotate(i * 6);
    canvas.translate(-radius, -v * radius);
}
给个提示,就是文字的y坐标不对,需要你根据文字的高度,重新计算出y坐标。
这里涉及到自定义view中,绘制文字的一个坑。
如果想了解详情,可以看看https://www.jianshu.com/p/d3667fab17bf