拖小球移动

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;
}

}

猜你喜欢

转载自blog.csdn.net/qq_43169246/article/details/83892986