public class Canser extends View {
private final Paint paint;
private float X = 50 ; //圆的X轴坐标
private float Y = 50 ; //圆的Y轴坐标
private int radius = 20; //圆的半径
private int dowmX;
private int dowmY;
private boolean isball;
//
public Canser(Context context) {
this(context,null);
}
//
public Canser(Context context, @Nullable AttributeSet attrs) {
this(context, attrs,0);
}
public Canser(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//初始化控件
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//设置画笔颜色
paint.setColor(Color.BLUE);
//绘制圆
canvas.drawCircle(X,Y,radius,paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
//点击的坐标
dowmX = (int) event.getX();
dowmY = (int)event.getY();
Log.d("Sxx","dowmX:"+dowmX+"dowmY:"+dowmY);
isball = isBall(dowmX, dowmY);
break;
case MotionEvent.ACTION_MOVE:
//判断是否在园内
if (isball){
X = event.getX();
Y = event.getY();
postInvalidate();
}
break;
}
return true;
}
private boolean isBall(int X1, int Y1) {
//勾股定理获得点击的点到圆心的距离
double sqrt = Math.sqrt((X1 - X) * (X1 - X) + (Y1 - Y) * (Y1 - Y));
if (sqrt<radius){
return true;
}
return false;
}
}