Jump to content

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

Link to comment
Share on other 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/

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...