package com.bw.day01_view.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class MyView extends View {
// 画笔
Paint paint = new Paint();
// 画笔颜色
int color = Color.YELLOW;
// 获取屏幕的宽度和高度
private int with;
private int heigh;
// 圆的半径大小
int radius = 0;
float centerx = 0;
float centery = 0;
float padding = 0;
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
// 测量view的高度和宽度
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
with = MeasureSpec.getSize(widthMeasureSpec);
heigh = MeasureSpec.getSize(heightMeasureSpec);
// 圆心的位置
centerx = with / 2;
centery = heigh / 2;
Log.d("withheigh", with + "==" + heigh);
}
// 画布
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 获取圆的半径
radius = (with - 60) / 2;
// 圆心的位置
// centerx = with / 2;
// centery = heigh / 2;
// 设置画笔的颜色
paint.setColor(color);
// 设置圆的样式
// paint.setStyle(Style.STROKE);
paint.setStyle(Style.FILL);
// 设置圆的边宽
padding = 10;
paint.setStrokeWidth(padding);
// 抗锯齿
paint.setAntiAlias(true);
canvas.drawCircle(centerx, centery, radius, paint);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right,
int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:// 手指按下的时候
break;
case MotionEvent.ACTION_MOVE:// 手指移动的时候
//圆的位置
centerx = event.getX();
centery = event.getY();
//重新绘制
postInvalidate();
break;
case MotionEvent.ACTION_UP:// 手指抬起的时候
break;
case MotionEvent.ACTION_CANCEL:// 手指取消的时候
break;
default:
break;
}
return true;
}
}
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class MyView extends View {
// 画笔
Paint paint = new Paint();
// 画笔颜色
int color = Color.YELLOW;
// 获取屏幕的宽度和高度
private int with;
private int heigh;
// 圆的半径大小
int radius = 0;
float centerx = 0;
float centery = 0;
float padding = 0;
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
// 测量view的高度和宽度
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
with = MeasureSpec.getSize(widthMeasureSpec);
heigh = MeasureSpec.getSize(heightMeasureSpec);
// 圆心的位置
centerx = with / 2;
centery = heigh / 2;
Log.d("withheigh", with + "==" + heigh);
}
// 画布
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 获取圆的半径
radius = (with - 60) / 2;
// 圆心的位置
// centerx = with / 2;
// centery = heigh / 2;
// 设置画笔的颜色
paint.setColor(color);
// 设置圆的样式
// paint.setStyle(Style.STROKE);
paint.setStyle(Style.FILL);
// 设置圆的边宽
padding = 10;
paint.setStrokeWidth(padding);
// 抗锯齿
paint.setAntiAlias(true);
canvas.drawCircle(centerx, centery, radius, paint);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right,
int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:// 手指按下的时候
break;
case MotionEvent.ACTION_MOVE:// 手指移动的时候
//圆的位置
centerx = event.getX();
centery = event.getY();
//重新绘制
postInvalidate();
break;
case MotionEvent.ACTION_UP:// 手指抬起的时候
break;
case MotionEvent.ACTION_CANCEL:// 手指取消的时候
break;
default:
break;
}
return true;
}
}