xnopre Posté(e) 28 mars 2011 Share Posté(e) 28 mars 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
xnopre Posté(e) 29 mars 2011 Auteur Share Posté(e) 29 mars 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/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.