public class ViewTest extends View {
private Paint mPaint;
private int mPadding;
private int mRadius;
private int mInnerRadius;
private static int KeDu_Circle = 8;
public ViewTest(Context context) {
this(context,null);
}
public ViewTest(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public ViewTest(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/*
* 初始化画笔
* */
private void init(){
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPadding = getPaddingLeft();
mRadius = (getWidth() - 2*mPadding)/2;
}
/*
* 绘制圆环
* */
private void drawOval(Canvas canvas){
mPaint.setColor(Color.BLUE);
canvas.drawCircle(0,0,mRadius,mPaint);
//内边圆的半径
mPaint.setColor(Color.WHITE);
mInnerRadius = mRadius - 50;
canvas.drawCircle(0,0,mInnerRadius,mPaint);
}
/*
* 绘制刻度
*
* */
private void drawKeDu(Canvas canvas){
mPaint.setColor(Color.RED);
for (int i = 1; i <=12;i++) {
float dx = (float) ((mInnerRadius - 30) * Math.sin(Math.PI/6 * i));
float dy = (float) ((mInnerRadius - 30)* Math.cos(Math.PI/6 * i));
canvas.drawCircle(dx,dy,30,mPaint);
}
}
/*
* 画文本
* */
private void drawText(Canvas canvas){
mPaint.setColor(Color.GREEN);
mPaint.setTextSize(40);
for (int i = 1; i <=12;i++) {
float dy = (float) ((mInnerRadius - 80) * (Math.sin(-Math.PI/ 2 + Math.PI/6* i)));
float dx = (float) ((mInnerRadius - 80)* (Math.cos(-Math.PI/2 + Math.PI/6*i)));
Rect textBound = new Rect();
String s = String.valueOf(i);
mPaint.getTextBounds(s,0,s.length(),textBound);
int x = (int) (dx - (textBound.right - textBound.left)/2);
int y = (int) (dy + (textBound.bottom - textBound.top)/2);
canvas.drawText(s,x,y,mPaint);
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
int minDimension = Math.min(width, height);
Log.d("wwj", "width is" + width + "height is " + height+"minDimension is "+ minDimension);
setMeasuredDimension(minDimension,minDimension);
init();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
// 将canvas的坐标原点移动到中心位置
canvas.translate(getWidth()/2,getHeight()/2);
drawOval(canvas);
drawKeDu(canvas);
drawText(canvas);
canvas.restore();
}
}
相关文章:http://blog.youkuaiyun.com/harvic880925