xnopre Posted March 28, 2011 Share Posted March 28, 2011 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 More sharing options...
xnopre Posted March 29, 2011 Author Share Posted March 29, 2011 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.