java - 检测悬停/滑动按钮

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

如何检测在其他按钮上滑动?

最佳答案

根据文档,您可能需要 ACTION_MOVE

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

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

int ACTION_HOVER_MOVE
getActionMasked() 的常量:发生了变化但指针没有向下(与 ACTION_MOVE 不同)。该运动包含最近的点,以及自上次悬停移动事件以来的任何中间点。

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

此操作不是触摸事件,因此它被传送到 onGenericMotionEvent(MotionEvent) 而不是 onTouchEvent(MotionEvent)。

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

关于java - 检测悬停/滑动按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41645973/

相关文章:

java - native EclipseLink : enable second level cache for some entities

php - 向特定用户发送推送通知

android - 使用 y 坐标确定 ListView 项目在 ListView 中的位置

android - 服务如何将结果返回给 Activity

android - Eclipse 找不到我的 HTC Sensation

java - Android MotionEvent.Action_MOVE

android - 将重力传感器、加速度计或陀螺仪事件注入(inject)正在运行的应用程序

java - RabbitMQ 同一队列的多个消费者

java - spock 测试中的对象比较失败

java - 如何更改微调菜单的标题