2010-03-25 6 views
2

J'essaie d'échanger deux LinearLayouts en définissant leurs propriétés de visibilité sur "VISIBLE" et "GONE" respectivement. J'utilise également une animation pendant que les mises en page sont permutées. L'animation se termine avec succès et je vois la mise en page correcte. Toutefois, la disposition précédente dont la propriété de visibilité est définie sur "GONE" reçoit toujours des clics même si elle n'est pas visible. En même temps, la mise en page qui est "VISIBLE" ne reçoit les clics que lorsque l'on clique dans la zone où la mise en page "GONE" n'est pas cliquable. J'appelle également la méthode requestFocus sur la mise en page "VISIBLE". Mais ça n'aide pas.Android LinearLayout Problèmes de visibilité avec Animation

De plus, si je saute la partie animation et que je règle les propriétés de visibilité, tout fonctionne correctement.

Qu'est-ce qui me manque ici?

Répondre

2

Si vous animez des widgets, vous devez modifier la mise en page pour que les résultats soient "collés". Juste en utilisant les choses fillAfter vous donnera certains des effets que vous voyez - il les dessine dans le nouvel emplacement, mais ils ne sont pas vraiment dans le nouvel emplacement. Donc, je commencerais par désactiver tous les paramètres fill* (par exemple, fillAfter) dans votre animation. Voyez ce que votre animation se comporte comme alors. Très probablement, il va maintenant décrire visuellement ce que les clics vous disent.

Ensuite, configurez un AnimationListener pour obtenir le contrôle à la fin de l'animation et, à ce moment-là, effectuez de véritables modifications sur les widgets et leurs conteneurs afin d'affecter vos positions finales.

Here is a sample project qui démontre ce que je veux dire, quoique d'une manière trop compliquée, puisque j'anime une vue personnalisée plutôt qu'un widget standard.

+0

Cool. J'ai enlevé setFillAfter (true) de mon animation. Et cela a fonctionné! Je ne suis toujours pas clair sur ce que setfillAfter fait réellement. L'exemple de projet que vous avez donné semble provenir de votre livre. Je l'ai traversé il y a quelques jours et la démo n'a pas fonctionné. Je vais essayer à nouveau ce soir pour une meilleure compréhension de cette question. Merci pour l'aide. – adityad

+0

L'échantillon a fonctionné la dernière fois que je l'ai essayé ... – CommonsWare