我正在开发一个Android应用程序,因为我绘制了一个圆圈,并且还随着手指触摸点移动。但我的问题是,当我触摸屏幕中的任何位置时,它从那里开始,我想在我只在圆圈内触摸时移动。请帮我。 这是我的代码,
public class Circle extends View {
int xTouch = 0;
int yTouch = 0;
int radius = 100;
// CONSTRUCTOR
public Circle(Context context, int x, int y) {
super(context);
setFocusable(true);
xTouch = x;
yTouch = y;
Log.v("" + xTouch, "" + yTouch);
}
@Override
protected void onDraw(Canvas canvas) {
Paint p = new Paint();
p.setAntiAlias(true);
p.setColor(Color.DKGRAY);
p.setStyle(Paint.Style.FILL);
canvas.drawCircle(xTouch, yTouch, radius, p);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int actionIndex = event.getActionIndex();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
xTouch = (int) event.getX(0);
yTouch = (int) event.getY(0);
invalidate();
break;
case MotionEvent.ACTION_MOVE:
xTouch = (int) event.getX(actionIndex);
yTouch = (int) event.getY(actionIndex);
invalidate();
break;
default:
break;
}
return true;
}
}
答案 0 :(得分:0)
Action_Down - 用于触摸屏幕的第一个指针(手指)。这会启动手势。
Action_Pointer_Down - 用于进入屏幕之外的额外指针(秒指)。
Action_Move - 在按下手势期间发生了更改
Action_Pointer_Up - 非主指针上升时发送。
Action_Up - 在最后一个指针离开屏幕时发送
现在您可以根据上述操作进行编码。
答案 1 :(得分:0)
记录最后一次触摸的坐标。
当有新的ACTION_DOWN时,
将触摸坐标与最后一个
进行比较看他们的距离是否小于半径。
如果是,请将圆圈移动到新坐标