2010-10-02 23 views
0

J'utilise actuellement l'événementComment puis-je désactiver temporairement/by-pass Android OnTouchEvent

@Override 
public boolean onTouchEvent(MotionEvent ev) 
{ 

Pour envoyer vos commentaires de l'utilisateur pour le jeu que je vous écris. Cet événement déclenche certains événements de contrôle de jeu qui prennent un certain temps à se terminer (car une animation est en jeu). Le problème que j'ai est pendant l'animation si je continue à toucher l'écran (AKA tirant cet événement), j'obtiendrai une erreur de timeout:

10-02 21: 58: 30.776: ERROR/ActivityManager (67): raison: keyDispatchingTimedOut

Fondamentalement, alors que l'animation est en cours d'exécution, je ne ai pas besoin de cet événement, même si ce serait bien de faire la queue elle.

Que puis-je faire pour empêcher le délai d'attente et mettre l'événement en file d'attente ou le désactiver temporairement?

Merci.

+0

utiliser un drapeau, lorsque le drapeau est vrai. revenez. sinon, gérer l'événement – qrtt1

Répondre

0

Avez-vous bloqué le thread d'interface utilisateur? Il n'y a absolument aucune raison de faire ce que vous demandez (et ce n'est même pas possible :)

+0

Pouvez-vous expliquer "bloquer le fil?" Je le fais probablement. Je fais essentiellement ma propre animation. Un fil dessine juste l'écran, tandis que l'autre thread utilise des délais entre le déplacement des tirages. Et ce OnTouchEvent déclenche le déplacement des drawables. – user432209

0

À côté de ce que Romain a dit.
Vous voudrez peut-être dormir() sur votre onTouchEvent.

+0

Malheureusement, je ne peux pas le faire car l'animation peut durer de 0,5 seconde à 5 ou plus. – user432209

+0

Que voulez-vous dire? Comment gérez-vous votre animation? J'utilise GLSurfaceView qui utilise son propre thread de rendu. Quand je reçois un boutonvent j'ai mis un booléen pour jouer une animation. Ensuite, sur le thread de rendu, je vérifie s'il faut lire l'animation pendant ce rendu ou non. Vous pouvez toujours dormir sur l'événement sans affecter votre animation. –

0

Un moyen facile à mettre en œuvre est d'ajouter une disposition trans-forme sur celle-ci (ajoutez-la dans la hauteur et la largeur de votre remplissage xml).

dans l'animation start transaparentlayout.setClickabe (true); en fin d'animation transaparentlayout.setClickabe (false);

très simple.