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
這是的輔助功能如何使用懸停事件的特點?有什麼辦法可以避免這種行爲?
只能在模擬器上進行測試。