在按钮上检测 hover/swipe
Detecting hover/swipe over a button
我想为 Android 创建一个简单的游戏,玩家将看到 table 个按钮。他应该有能力 swipe/drag 他的手指在一些按钮上,他的移动结果应该只有在他停止触摸屏幕后才会显示。
我可以看到何时调用 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
整数ACTION_MOVE
getActionMasked() 的常量:在按下手势期间发生了变化(在 ACTION_DOWN 和 ACTION_UP 之间)。该运动包含最近的点,以及自上次向下或移动事件以来的任何中间点。
您在使用 ACTION_HOVER_MOVE 时遇到问题,因为:
整数ACTION_HOVER_MOVE
getActionMasked() 的常量:发生了变化,但指针没有向下(与 ACTION_MOVE 不同)。该运动包含最近的点,以及自上次悬停移动事件以来的任何中间点。
此操作始终传递到指针下的 window 或视图。
此操作不是触摸事件,因此它被传递给 onGenericMotionEvent(MotionEvent) 而不是 onTouchEvent(MotionEvent)。
来源:https://developer.android.com/reference/android/view/MotionEvent.html#ACTION_MOVE
我想为 Android 创建一个简单的游戏,玩家将看到 table 个按钮。他应该有能力 swipe/drag 他的手指在一些按钮上,他的移动结果应该只有在他停止触摸屏幕后才会显示。
我可以看到何时调用 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
整数ACTION_MOVE
getActionMasked() 的常量:在按下手势期间发生了变化(在 ACTION_DOWN 和 ACTION_UP 之间)。该运动包含最近的点,以及自上次向下或移动事件以来的任何中间点。
您在使用 ACTION_HOVER_MOVE 时遇到问题,因为:
整数ACTION_HOVER_MOVE
getActionMasked() 的常量:发生了变化,但指针没有向下(与 ACTION_MOVE 不同)。该运动包含最近的点,以及自上次悬停移动事件以来的任何中间点。
此操作始终传递到指针下的 window 或视图。
此操作不是触摸事件,因此它被传递给 onGenericMotionEvent(MotionEvent) 而不是 onTouchEvent(MotionEvent)。
来源:https://developer.android.com/reference/android/view/MotionEvent.html#ACTION_MOVE