Aller au contenu

TextView "animé vers le haut"


xnopre

Recommended Posts

Bonjour à tous,

Dans mon application, en haut de l'écran, j'ai un TextView dans lequel je mets du texte au fur et à mesure des saisies de l'utilisateur (sur des boutons). Lorsqu'il valide, j'aimerai "déplacer" ce TextView vers le haut, si possible avec une animation, d'un cran en quelque sorte et faire apparaitre un nouveau TextView à la place, et ainsi de suite. J'espère être clair, c'est pas facile à expliquer ...

Comment puis-je faire ça ? Une idée ?

Merci

Xavier

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

J'ai trouvé, je me réponds à moi-même si des fois ça peut en aider d'autres ...

Dans mon application, en haut de l'écran, j'ai un TextView dans lequel je mets du texte au fur et à mesure des saisies de l'utilisateur (sur des boutons). Lorsqu'il valide, j'aimerai "déplacer" ce TextView vers le haut, si possible avec une animation, d'un cran en quelque sorte et faire apparaitre un nouveau TextView à la place, et ainsi de suite. J'espère être clair, c'est pas facile à expliquer ...

Comment puis-je faire ça ? Une idée ?

Voilà comment j'ai fait :

  • J'ai créé 2 TextView, disons tvHaut (pour celui d'en-haut) et tvBas (pour celui du bas)
  • Pendant les actions de l'utilisateur, je remplis tvBas
  • Validation de l'utilisateur
  • Je vide tvBas ""
  • Je remplis tvHaut "bla bla bla"
  • J'anime tvHaut

Pour l'animation, j'ai créé un fichier res/anim/translate.xml :

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0%" android:toXDelta="0%" android:fromYDelta="100%"
android:toYDelta="0%" android:duration="500" android:zAdjustment="bottom" />

Cette animation fait une translation ("delta") de 0% en X (pas de changements) et de 100% en Y (de ce que j'en ai compris et déduit, c'est la hauteur totale du composant) à 0% en Y (la position "normale") sur une durée de 500 ms.

Pour le code Java, c'est facile :

final Animation animation = AnimationUtils.loadAnimation(this, R.anim.translate);
animation.reset();
tvHaut.startAnimation(animation);

Et si on veut attendre la fin de l'animation :

animation.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
	// Ici, l'animation est terminée !
}
});

Voilà !

Xavier

PS : infos trouvée notamment ici : http://www.hascode.com/2010/09/playing-around-with-the-android-animation-framework/

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...