2010-08-03 20 views
8

J'ai 2 ImageView s que je traduis du haut de l'écran vers le bas. ces vues sont infalted à partir de xml et l'animation est ajoutée à partir du code java. L'animation fonctionne parfaitement, mais le onClickListener j'ai ajouté dans le code java ne semble pas fonctionner. J'ai utilisé l'attribut fillAfter de l'animation pour que les iamges restent à leur arrivée après la traduction, mais ces images ne sont plus cliquables ... Cependant, leur position avant traduction reste cliquable ... Je ne vois pas la logique de ce. Quelqu'un pourrait-il me donner un conseil à ce sujet?TranslateAnimated ImageView pas cliquable après l'animation [Android]

+0

Ok, a trouvé ma réponse ici: http://stackoverflow.com/questions/2125694/android-button-doesnt-response-after-animation maintenant j'ai juste besoin de paramétrer correctement ses paramètres pour obtenir sa position correcte ... – Sephy

+0

Cependant, cela ne semble pas être compatible avec setFillAfter. J'ajoute pour l'enlever pour le faire fonctionner. – Sephy

+0

J'ai eu ce problème, et je l'ai résolu après quelques recherches. [Ici vous pouvez trouver une réponse] [1] [1]: http://stackoverflow.com/questions/18333269/how-to-set-button-clickable-while-animating-on -android/18509197 # 18509197 – SteBra

Répondre

14

Ceci est dû au fait que les animations n'affectent que le dessin du widget. Cependant, l'emplacement réel n'est pas affecté -Il est toujours dans le précédent-.

Pour résoudre ce problème, vous devez mettre à jour les paramètres de mise en page du ImageView manuellement en installant un écouteur d'animation comme suit:

Animation.setAnimationListener(new AnimationListener() { 
     public void onAnimationStart(Animation arg0) { 

     } 

     public void onAnimationRepeat(Animation arg0) { 
      //TODO Auto-generated method stub 
     } 

     public void onAnimationEnd(Animation arg0) { 
      android.widget.LinearLayout.LayoutParams params = new LayoutParams(
      android.widget.LinearLayout.LayoutParams.FILL_PARENT, 
      android.widget.LinearLayout.LayoutParams.WRAP_CONTENT); 
      params.topMargin = addLocationButton.getTop()-100; 

      ImageView.setLayoutParams(params); 
     } 
     }); 
+1

No good, car après l'animation dans onAnimationEnd, lorsque l'image obtient la position de "setLayoutParams (params);" alors je vois un scintillement. J'ajoute qu'il est difficile de définir le TopMargin du pourcentage de la propriété toYDelta – oscaroxy

+4

Pour supprimer le scintillement, vous pouvez utiliser \t \t \t \t \t \t \t animation.reset(); .clearAnimation(); – slott