Animation <alpha> sur un View (ImageView, TextView et EditText)

Résolu/Fermé
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 17 mars 2017 à 15:23
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 19 mars 2017 à 03:49
Bonjour,

J'ai vu que l'on pouvait créer une animation sur une vue entière grâce à
alpha
. Mais peut-on appliquer cette animation à une partie de la vue ? J'aimerais que dans un Layout, les vues de mon LinearLayout (ImageView, TextView et EditText) apparaissent en enchaînement. La première vue apparaît tout de suite, puis la seconde, puis la troisième... etc. Ou faut-il obligatoirement que je crée un "sous" Layout pour chaque partie et ensuite que j'assemble les différentes parties dans un Layout global qui les appellerait. Donc un gros faire un fichier XML pour chaque View (ImageView, TextView et EditText) qui chacun aurait son
alpha
et faire un fichier XML global qui appelle tous les petits XML.
A voir également:

2 réponses

BunoCS Messages postés 15495 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 octobre 2024 3 909
17 mars 2017 à 16:29
Re ;)

Une animation s'applique à une View. Donc à n'importe quel composant graphique: ImageView, Button, Layout,...

A noter que l'animation alpha joue sur la transparence.
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
17 mars 2017 à 16:54
Décidément tu es sur tous les fronts. ^^

Oui mais comment introduire
alpha
dans une ImageView par exemple alors ? Parce que les tutos présents sur le net expliquent comment l'utiliser à la racine du fichier XML avec des balises
<alpha></alpha>
. Hors tu ne peux pas introduire ces balises à l'intérieur des propres balises de l'ImageView... si ?
0
BunoCS Messages postés 15495 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 octobre 2024 3 909
17 mars 2017 à 17:13
Tu mélanges 2 choses.

1. La définition de l'animation peut se faire en XML (avec les balises alpha, oui) ou par code.
2. L'élément sur lequel appliquer l'animation

Soit le fichier anim_alpha.xml, stocké dans le répertoire anim, suivant
<set xmlns:android="http://schemas.android.com/apk/res/android"  
   android:interpolator="@android:anim/linear_interpolator">  
   <alpha  
       android:fromAlpha="0.2"  
       android:toAlpha="1.0"  
       android:duration="500"/>  
</set>


Soit, le morceau de layout suivant:
<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/image"/> 


Pour lancer l'animation, cela ce fait dans le code:
final Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim_alpha);
final ImageView imageView = (ImageView) findViewById(R.id.image);
anim .setFillAfter(true);
imageView.startAnimation(animation);
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
18 mars 2017 à 19:24
Merci pour ton explication. J'ai juste un petit souci avec
anim
dans
final Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim_alpha);
final ImageView imageView = (ImageView) findViewById(R.id.image);
anim .setFillAfter(true);
imageView.startAnimation(animation);

Il m'indique "Qualifier must be an expression".
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
18 mars 2017 à 23:53
Ah, ça y est, j'ai compris. En fait tu avais mal écrit. C'était
animation
et pas
anim
. ^^ Et cela fonctionne. Par contre, comment pourrais-je faire pour afficher les View en enchaînement, avec des délais d'apparition différents ?
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
19 mars 2017 à 03:49
Bon j'ai laissé tomber l'enchaînement. J'ai attribué un ID au conteneur de mes vues dans mon Layout, puis j'ai modifier ImageView en View, et maintenant c'est tout le Layout qui apparaît progressivement. Plutôt sympa comme effet. Et ça me convient. Merci pour ton aide.
0