j'ai une vue personnalisée qui l'emporte sur dispatchHoverEvent() pour qu'il puisse mettre en œuvre un certain soutien pour les fonctions de Talkback, il a le code suivant pour les tests:événement ACTION_HOVER_ENTER répète les coordonnées précédentes
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;
}
}
Le résultat de cette après deux gestes est (retiré des sorties log 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
le problème est les événements ACTION_HOVER_ENTER, en particulier l'événement suivant entrent après un événement de déplacement et de sortie. Dans api24 +, le deuxième événement d'entrée en vol semble répéter les coordonnées précédentes de l'événement d'entrée en vol stationnaire (si l'événement d'entrée initial est maintenu pendant quelques secondes). Parfois, il a les mêmes valeurs x, y ou seulement l'une d'entre elles, mais l'événement enter réel n'est pas proche des valeurs de coordonnées. Cela décourage ma gestion des événements d'accessibilité pour la vue personnalisée.
S'il y a des événements de vol stationnaire qui n'ont pas ACTION_HOVER_MOVE il donne le comportement prévu:
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
Est-ce une caractéristique de la façon dont l'accessibilité utilise les événements de vol stationnaire? Est-il possible d'éviter ce comportement?
Seulement été en mesure de tester cela sur un émulateur.