使用MotionEvent(ACTION_MOVE)

时间:2014-11-17 12:23:59

标签: android motionevent

所以我对你有特别的疑问: 当我使用移动动作时如何捕捉按钮?如何在屏幕上处理按钮(或其他元素)的移动?

我使用了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。 当运动开始时,我可以比较这个坐标和运动的真实坐标。 所以通过这种方式我可以知道哪些按钮运动。

可能我重新发明了轮子。这就是为什么我要求你的帮助)

2 个答案:

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