0
我有一个覆盖dispatchHoverEvent(自定义视图,因此它可以实现对语音对讲功能的一些支持,它为测试下面的代码:ACTION_HOVER_ENTER事件重复)先前坐标
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_HOVER_ENTER: {
Log.d("dispatchHoverEvent", "ACTION_HOVER_ENTER x=" + x + " y=" + y);
break;
}
case MotionEvent.ACTION_HOVER_MOVE: {
Log.d("dispatchHoverEvent", "ACTION_HOVER_MOVE x=" + x + " y=" + y);
break;
}
case MotionEvent.ACTION_HOVER_EXIT: {
Log.d("dispatchHoverEvent", "ACTION_HOVER_EXIT x=" + x + " y=" + y);
break;
}
}
两个手势后,输出此被(移除了一些ACTION_HOVER_MOVE日志输出):
D/dispatchHoverEvent: ACTION_HOVER_ENTER x=73.03711 y=413.70703
D/dispatchHoverEvent: ACTION_HOVER_MOVE x=79.0686 y=412.71094
D/dispatchHoverEvent: ACTION_HOVER_MOVE x=85.06714 y=412.71094
D/dispatchHoverEvent: ACTION_HOVER_MOVE x=93.07617 y=412.71094
D/dispatchHoverEvent: ACTION_HOVER_MOVE x=103.062744 y=412.71094
...
...
D/dispatchHoverEvent: ACTION_HOVER_MOVE x=203.15918 y=416.6953
D/dispatchHoverEvent: ACTION_HOVER_EXIT x=203.15918 y=416.6953
D/dispatchHoverEvent: ACTION_HOVER_ENTER x=73.03711 y=412.71094
D/dispatchHoverEvent: ACTION_HOVER_MOVE x=643.5571 y=413.70703
D/dispatchHoverEvent: ACTION_HOVER_EXIT x=643.5571 y=413.70703
问题是ACTION_HOVER_ENTER事件,具体有以下的举动和退出事件之后输入事件。在api24 +中,第二个悬停输入事件似乎重复上一个悬停输入事件的坐标(如果初始输入事件持续几秒钟)。有时它具有相同的x,y值,或者只有其中一个,但实际的输入事件不在任何坐标值附近。这抛弃了我对自定义视图的可访问性事件的处理。
如果有没有ACTION_HOVER_MOVE它给人的预测行为悬停事件:
D/dispatchHoverEvent: ACTION_HOVER_ENTER x=98.08594 y=424.72266
D/dispatchHoverEvent: ACTION_HOVER_EXIT x=98.08594 y=424.72266
D/dispatchHoverEvent: ACTION_HOVER_ENTER x=442.3755 y=428.70703
D/dispatchHoverEvent: ACTION_HOVER_EXIT x=442.3755 y=428.70703
这是的辅助功能如何使用悬停事件的特点?有什么办法可以避免这种行为?
只能在模拟器上进行测试。