拖小球移动

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值