检测悬停/滑动按钮

时间:2017-01-14 01:47:18

标签: java android motionevent

我希望为Android创建一个简单的游戏,玩家将会看到一个按钮表。他应该能够在一些按钮上滑动/拖动手指,只有在他停止触摸屏幕后才会显示他的移动结果。

我可以看到调用Action_UP和Action_Down的时间,但我无法使用Action_HOVER_MOVE:

View.OnTouchListener OTL = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {           

        if (motionEvent.getAction()==MotionEvent.ACTION_DOWN
                || motionEvent.getAction()==MotionEvent.ACTION_HOVER_MOVE)

        {
            Button B = (Button)view;
            if (B.isActivated())
            {
                String letter = B.getText()+"";
                word+=letter;
            }
            B.setActivated(false);
            Toast t = Toast.makeText(MainActivity.this,word,Toast.LENGTH_SHORT);
            t.show();

        }
        if (motionEvent.getAction()==MotionEvent.ACTION_UP)
        {
           Toast t = Toast.makeText(MainActivity.this,word,Toast.LENGTH_SHORT);
            t.show();
            word="";
            resetButtons();
        }

        return true;
    }
};

如何检测滑动其他按钮?

1 个答案:

答案 0 :(得分:2)

根据文档,您可能需要ACTION_MOVE

int ACTION_MOVE
getActionMasked()的常量:在按下手势期间(ACTION_DOWN和ACTION_UP之间)发生了更改。动作包含最近的点,以及自上次向下或移动事件以来的任何中间点。

您在使用ACTION_HOVER_MOVE时遇到问题,因为:

int ACTION_HOVER_MOVE
getActionMasked()的常量:发生了更改,但指针未关闭(与ACTION_MOVE不同)。该动作包含最近的点,以及自上次悬停移动事件以来的任何中间点。

此操作始终传递到指针下的窗口或视图。

此操作不是触摸事件,因此传递给onGenericMotionEvent(MotionEvent)而不是onTouchEvent(MotionEvent)。

来源:https://developer.android.com/reference/android/view/MotionEvent.html#ACTION_MOVE