所以我对你有特别的疑问: 当我使用移动动作时如何捕捉按钮?如何在屏幕上处理按钮(或其他元素)的移动?
我使用了MotionEvent(ACTION_MOVE)但是使用了那段代码我没有得到想要的结果
在OnCreate中
btn1.setOnTouchListener(this); //for all of buttons on Activity
onTouch中的
switch(event.getAction()) {
case MotionEvent.ACTION_MOVE:
//actions
break;
}
动作将从动作开始的第一个按钮开始。在其他情况下,不会发生任何事情
此时我认为我可以将ACTION_MOVE用于我的Activity而不是每个按钮或其他元素,并将按钮的坐标(左上角和右下角)保存到arraylist。 当运动开始时,我可以比较这个坐标和运动的真实坐标。 所以通过这种方式我可以知道哪些按钮运动。
可能我重新发明了轮子。这就是为什么我要求你的帮助)
答案 0 :(得分:0)
你能解释清楚吗?从我看到你需要的东西可能做两件事:
首先将监听器添加到所有按钮,然后让您的活动实现onTouchListener
其次,您需要为MotionEvent.ACTION_DOWN中的每个按钮保存初始坐标(如果我对语法有正确的话)。
这样您就可以访问您的所有按钮,并且可以正确保存其坐标
答案 1 :(得分:0)
您将获得触摸侦听器内部的视图,您可以使用该视图进行识别。
Button btn1 = (Button) findViewById(R.id.btn1);
Button btn2 = (Button) findViewById(R.id.btn2);
Button btn3 = (Button) findViewById(R.id.btn3);
btn1.setOnTouchListener(touchListener);
btn2.setOnTouchListener(touchListener);
btn3.setOnTouchListener(touchListener);
private OnTouchListener touchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
switch (v.getId()) {
case R.id.btn1:
//Button 1
break;
case R.id.btn2:
//Button 2
break;
case R.id.btn3:
//Button 3
break;
}
}
return false;
}
};