package com.wuxiaolong.androidsamples.cardashboard; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; /** * Created by Administrator * on 2016/8/12. */ public class CarDashboardView extends View { Paint mPaint, mPaintText; public CarDashboardView(Context context) { super(context); init(); } public CarDashboardView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public CarDashboardView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } /** * 初始化对象 */ private void init() { // 实例化画笔并开启其抗锯齿和抗抖动 mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); // 设置画笔颜色为浅灰色 mPaint.setColor(Color.WHITE); //设置画笔样式为描边,画笔样式分三种: //1.Paint.Style.STROKE:描边 //2.Paint.Style.FILL_AND_STROKE:描边并填充 //3.Paint.Style.FILL:填充 mPaint.setStyle(Paint.Style.STROKE); //设置描边的粗细,单位:像素px //注意:当setStrokeWidth(0)的时候描边宽度并不为0而是只占一个像素 mPaint.setStrokeWidth(10); mPaintText = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); mPaintText.setColor(Color.WHITE); mPaintText.setStrokeWidth(10); mPaintText.setTextSize(40); } float circleX = 500, circleY = 500, circleRadius = 300; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 绘制圆环 canvas.drawCircle(circleX, circleY, circleRadius, mPaint); //drawScale(canvas); } /** * 绘制刻度 */ private void drawScale(Canvas canvas) { for (int i = 0; i < 13; i++) { canvas.drawLine(circleX, circleY + circleRadius, circleX, circleY + circleRadius - 20, mPaint); canvas.drawText(String.valueOf(i), circleX, circleY + circleRadius - 50, mPaintText); //第一个参数是旋转角度,后两个参数依旧是控制旋转中心点 canvas.rotate(360 / 13, circleX, circleY); } } }