public class MyYuan extends View {
private Paint paint;
private int x;
private int y;
private int mStartX;
private int mStartY;
private int R = 100;
private boolean zanting;
public MyYuan(Context context) {
this(context,null);
}
public MyYuan(Context context, @Nullable AttributeSet attrs) {
this(context, attrs,0);
}
public MyYuan(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
private void initView() {
//创建画笔
paint = new Paint();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int mX = this.getHeight();
int mY = this.getWidth();
x = mX / 2;
y = mY / 2 ;
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//设置画笔颜色
paint.setColor(Color.BLUE);
//设置小球
canvas.drawCircle(x,y,R,paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
mStartX = (int) event.getX();
mStartY = (int) event.getY();
zanting = zanting(mStartX, mStartY);
break;
case MotionEvent.ACTION_MOVE:
if(zanting){
x = (int) event.getX();
y = (int) event.getY();
postInvalidate();
}
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
private boolean zanting(int mStartX,int mStartY) {
if (Math.sqrt(((mStartX - x) * (mStartX - x)) + ((mStartY - y) * (mStartY - y))) <= R){
return true;
}
return false;
}
}