2012-05-04 2 views
4

Je détecte le mouvement de balayage sur 2 vues avec des méthodes différentes: le premier est via GestureDetector, et le second est GestureOverlayView (j'en ai besoin car la deuxième vue est GridView et GestureDetector ne fonctionne pas correctement).Pourquoi GestureOverlayView est si lent?

Le premier est presque instantané, mais le second a un retard d'environ 1 seconde (Nexus S, ICS). Pourquoi, et comment puis-je le réparer?

Je ne peux pas changer de méthode, car je devrai reconnaître des gestes plus compliqués plus tard, mais je veux que cela fonctionne instantanément.

Répondre

8

J'ai trouvé la solution:

android:fadeOffset="0" 
android:fadeDuration="0" 

Et cela fonctionne instantanément :)

+0

Merci, note pour quelqu'un d'autre: ajoutez ceci à la GestureOverlayView en xml –

1

En raison de sa nature, GestureOverlayView s'appuie sur les minutages avant de commencer à reconnaître une forme. Ce n'est pas une question de performance.

EDIT

Désolé, mais je ne pense pas qu'il est possible de changer le temps de réaction du GestureOverlayView :(

EDIT-END

+0

Puis-je changer cette heure? Ce n'est pas convivial dans mon cas d'utilisation avec ces timings :) – arts777

+0

Salut, je fais un peu de recherche à ce sujet maintenant, mais je ne pense pas que vous pouvez changer ceci:/Je posterai et éditerai ou commenterai si je trouve quelque chose :) – Bercik

1

Si vous ne possédez pas le jeu de GestureOverlayView dans le fichier XML, mais directement dans le code, vous pouvez utiliser les éléments suivants qui font la même chose que la solution RankoR:

mGestureOverlayView.setFadeEnabled(false); 
mGestureOverlayView.setFadeOffset(0); 

La méthode onGesturePerformed est alors appelé immédiatement après onGesturingEnded (8 ms après dans mon cas)