package com.tekinarslan.material.sample.customui;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import com.apkfuns.logutils.LogUtils;
/**
* Created by cdj on 2015/9/23.
*/
public class CustomCompassView extends View {
private Paint paint;
public CustomCompassView(Context context) {
super(context);
// LogUtils.d("000000000000000");
}
public CustomCompassView(Context context, AttributeSet attrs) {
super(context, attrs);
// LogUtils.d("1111111111111111111111");
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
LogUtils.d("2222222222222222");
drawCompass(canvas);
// paint.setAntiAlias(true);
// paint.setStyle(Paint.Style.STROKE);
// paint.setStrokeWidth(2);
// int dx = 250;
// int dy = 150;
// for (int i =0;i<360/30;i++){
// LogUtils.d("i * 30="+i * 30);
// canvas.save();
// canvas.rotate(i * 30, dx, dy);
// canvas.drawLine(dx, dy, dx, 0, paint);
// canvas.restore();
// }
}
private void drawCompass(Canvas canvas) {
int radius = 200;
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
canvas.translate(canvas.getWidth() / 2, canvas.getWidth() / 2); //将位置移动画纸的坐标点:150,150
LogUtils.d("canvas.getWidth() / 2=" + canvas.getWidth() / 2);
canvas.drawCircle(0, 0, radius, paint); //画圆圈
//使用path绘制路径文字
canvas.save();
canvas.translate(-150, -150);
Path path = new Path();
path.addArc(new RectF(0,0,300,300), -150, 180);
Paint citePaint = new Paint(paint);
citePaint.setTextSize(14);
citePaint.setStrokeWidth(1);
canvas.drawTextOnPath("http://www.android777.com.www.android777", path, 28, 0, citePaint);
canvas.restore();
Paint tmpPaint = new Paint(paint); //小刻度画笔对象
tmpPaint.setStrokeWidth(1);
float y=200;
int count = 60; //总刻度数
for(int i=0 ; i <count ; i++){
if(i%5 == 0){
canvas.drawLine(0f, y, 0, y+12f, paint);
canvas.drawText(String.valueOf(i/5+1), -4f, y+25f, tmpPaint);
}else{
canvas.drawLine(0f, y, 0f, y +5f, tmpPaint);
}
canvas.rotate(360/count,0f,0f); //旋转画纸
}
//绘制指针
tmpPaint.setColor(Color.GRAY);
tmpPaint.setStrokeWidth(4);
canvas.drawCircle(0, 0, 7, tmpPaint);
tmpPaint.setStyle(Paint.Style.FILL);
tmpPaint.setColor(Color.YELLOW);
canvas.drawCircle(0, 0, 5, tmpPaint);
canvas.drawLine(0, 10, 0, -95, paint);
}
}