我正在盲目支持下撰写应用程序。我需要检测双指触摸。当任何辅助功能关闭时,我尝试使用TouchListener:
RelativeLayout rl = (RelativeLayout) findViewById(R.id.main);
rl.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// get masked (not specific to a pointer) action
int maskedAction = event.getActionMasked();
Log.d(TAG, "onTouch: " + actionToString(maskedAction) + " " + event.getPointerCount());
return true;
}
});
}
// Given an action int, returns a string description
public static String actionToString(int action) {
switch (action) {
case MotionEvent.ACTION_DOWN: return "Down";
case MotionEvent.ACTION_MOVE: return "Move";
case MotionEvent.ACTION_POINTER_DOWN: return "Pointer Down";
case MotionEvent.ACTION_UP: return "Up";
case MotionEvent.ACTION_POINTER_UP: return "Pointer Up";
case MotionEvent.ACTION_OUTSIDE: return "Outside";
case MotionEvent.ACTION_CANCEL: return "Cancel";
}
return "";
}
我得到了
一切都很好。 但是当我打开TalkBack时,我很少得到多点触控事件。这意味着我需要重复相同的手势几次,但我只获得一次任何日志。
有人可以提供我的任何提示。坦克很多。
P.S。它可能很有用。我需要实现手势 - 用两根手指敲击,用手指双击,用两根手指长按,用两根手指轻扫。但是滑动工作正常,因为它们在TalkBack中默认已被覆盖。
答案 0 :(得分:1)
在深入研究这个问题并且我仍然拥有它之后,似乎我们无法跟踪TalkBack的Touch to Explore功能中的两个指针!
如果您选中了my question及其答案,您将看到当您激活TalkBack的触摸浏览功能时触发的事件,并触摸视图为onHoverEvent
。
此事件只处理一个指针,您可以使用MotionEvent.ACTION_HOVER_ENTER
,MotionEvent.ACTION_HOVER_MOVE
和MotionEvent.ACTION_HOVER_EXIT
跟踪它。
没有像ACTION_HOVER_POINTER_EXIT
这样的其他指针。
我希望如果有人有任何解决方案与我们分享。