Android AnimationListener

Fermé
trailer91230 Messages postés 134 Date d'inscription jeudi 5 août 2010 Statut Membre Dernière intervention 20 mai 2016 - 20 sept. 2015 à 18:47
trailer91230 Messages postés 134 Date d'inscription jeudi 5 août 2010 Statut Membre Dernière intervention 20 mai 2016 - 21 sept. 2015 à 13:18
Bonjour !

Je suis actuellement en train d'apprendre à programmer sur Android grâce au tuto de OP...

Je suis maintenant au TP "Bloc note" et je n'arrive pas à comprendre un petit truc qui me parait illogique sur les AnimationListener.

	    //Si le menu est déjà ouvert
	    if (isOpen) 
	    {
//Animation de translation du bas vers le haut
	   animation = new TranslateAnimation(0.0f, 0.0f,-toHide.getHeight(), 0.0f);
	   animation.setAnimationListener(openListener);
	    } 
 

Si j'ai bien compris :

Ici on veut effectué une animation pour fermé le menu du bas vers le haut.

Par la suite on utilise la méthode du Listener Animation pour changé la visibilité du Layout.


	/* Listener pour l'animation d'ouverture du menu */
	Animation.AnimationListener openListener = new Animation.AnimationListener() {
		public void onAnimationEnd(Animation animation) {
		}
		    
		public void onAnimationRepeat(Animation animation) {
		}
		    
		public void onAnimationStart(Animation animation) {
			//On affiche le menu
			toHide.setVisibility(View.VISIBLE);
		}
	};



Mais pourquoi on utilise le Listener "open" qui rend le layout "visible" sachant qu'on veut fermer le menu et le rendre invisible ?
A voir également:

2 réponses

BunoCS Messages postés 15476 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 3 mai 2024 3 895
21 sept. 2015 à 09:32
Hello,
Tu aurais un lien vers le tuto ou vers le code complet pour mieux comprendre?
A quoi correspond
toHide
par exemple ?
0
trailer91230 Messages postés 134 Date d'inscription jeudi 5 août 2010 Statut Membre Dernière intervention 20 mai 2016 2
21 sept. 2015 à 10:30
0
BunoCS Messages postés 15476 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 3 mai 2024 3 895
21 sept. 2015 à 10:53
Pour faire remonter le menu, on va partir de sa position de départ (donc fromXDelta = 0 et fromYDelta = 0, c'est-à-dire qu'on ne bouge pas le menu sur aucun des deux axes au début) et on va le déplacer sur l'axe Y jusqu'à ce qu'il sorte de l'écran (donc toXDelta = 0 puisqu'on ne bouge pas et toYDelta = -tailleDuMenu puisque, rappelez-vous, l'axe Y part du haut pour aller vers le bas). Une fois l'animation terminée, on dissimule le menu avec la méthode setVisibility(VIEW.Gone).

Avec un raisonnement similaire, on va d'abord remettre la visibilité à une valeur normale (setVisibility(VIEW.Visible)) et on déplacera la vue de son emplacement hors cadre jusqu'à son emplacement normal (donc fromXDelta = 0, fromYDelta = -tailleDuMenu, toXDelta = 0 et toYDelta = 0).


Je ne vois pas trop où est le menu mais je pense que tu as mélangé les 2 paragraphes. On remonte le menu pour le fermer. Donc, à la fin de l'animation de translation, il faut le cacher (visibility gone). Pour l'ouvrir, il faut le descendre. Mais il faut bien commencer à mettre le passer visible sinon, nous ne le ferons pas ;)
0
trailer91230 Messages postés 134 Date d'inscription jeudi 5 août 2010 Statut Membre Dernière intervention 20 mai 2016 2
21 sept. 2015 à 13:18
Justement quand je termine l'animation pour la fermeture (donc du bas vers le haut), je passe le menu en gone, mais l'animation passe mal, en revanche quand je fais l'inverse en le passant en visible, l'animation passe bien...
Je comprends pas du tout la logique.
0