Apparitions en cascade de différentes vues

Fermé
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 31 mars 2017 à 15:41
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 4 avril 2017 à 13:13
Bonjour,

Actuellement je fais apparaître l'ensemble de ma page d'un seul tenant grâce à
alpha
. Maintenant j'aimerais pousser un peu plus loin la chose et si possible faire apparaître en cascade, de haut en bas, les différentes vues de ma page.

Ci-dessous le code java qui me permet actuellement de faire apparaître ma page :
setContentView(R.layout.start_activity);

final Animation startActivity_animation = AnimationUtils.loadAnimation(this, R.anim.apparition);
final View animationStartActivity_affichage = findViewById(R.id.startActivity_conteneurScrollView);
startActivity_animation.setFillAfter(true);
animationStartActivity_affichage.startAnimation(startActivity_animation);


Ci-dessous le code xml de mon activité :
<?xml version="1.0" encoding="utf-8"?>
<!-- Conteneur parent. -->
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/startActivity_conteneurScrollView"
tools:context="com.xxxxxxxxxx.Start"
style="@style/conteneurScrollView">

<!-- Conteneur enfant. -->
<LinearLayout style="@style/conteneurScrollView_enfant">

<!-- Logo. -->
<ImageView
android:id="@+id/startActivity_logo"
style="@style/conteneurImageView"/>

<!-- Bloc pseudo. -->
<LinearLayout style="@style/conteneurFormulaire">

<!-- Ensemble intitulé+champs du bloc pseudo. -->
<LinearLayout style="@style/blocFormulaire">

<!-- Intitulé du bloc pseudo. -->
<TextView
android:id="@+id/startActivity_blocPseudo_intitule"
android:text="@string/startActivity_blocPseudo_intitule"
style="@style/intituleFormulaire" />

<!-- Champs du bloc pseudo. -->
<EditText
android:id="@+id/startActivity_blocPseudo_champs"
style="@style/champsFormulaire" />

</LinearLayout>

<!-- Consignes du bloc pseudo. -->
<TextView
android:id="@+id/startActivity_blocPseudo_consignes"
android:text="@string/startActivity_blocPseudo_consignes"
style="@style/consignesFormulaire" />

</LinearLayout>

<!-- Bloc mot de passe. -->
<LinearLayout style="@style/conteneurFormulaire">

<!-- Ensemble intitulé+champs du bloc mot de passe. -->
<LinearLayout style="@style/blocFormulaire">

<!-- Intitulé du bloc mot de passe. -->
<TextView
android:id="@+id/startActivity_blocMotDePasse_intitule"
android:text="@string/startActivity_blocMotDePasse_intitule"
style="@style/intituleFormulaire" />

<!-- Champs du bloc mot de passe. -->
<EditText
android:id="@+id/startActivity_blocMotDePasse_champs"
style="@style/champsFormulaire" />

</LinearLayout>

<!-- Consignes du bloc mot de passe. -->
<TextView
android:id="@+id/startActivity_blocMotDePasse_consignes"
android:text="@string/startActivity_blocMotDePasse_consignes"
style="@style/consignesFormulaire" />

</LinearLayout>

<!-- Bouton connexion. -->
<Button
android:id="@+id/startActivity_boutonConnexion"
android:text="@string/startActivity_boutonConnexion"
style="@style/bouton" />

<!-- Bouton inscription. -->
<Button
android:id="@+id/startActivity_boutonInscription"
android:text="@string/startActivity_boutonInscription"
style="@style/bouton" />

</LinearLayout>

</ScrollView>


Et pour finir ci-dessous la ressource de l'animation :
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1357" />
</set>

4 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 3 894
3 avril 2017 à 16:05
Hello,

Tu veux faire apparaitre un à un tes champs automatiquement? Ou bien tu ferais apparaître un champ suite à une action utilisateur?

Attention! Trop d'animations tue l'animation! Il vaut mieux que tout s'affiche d'un coup nickel plutôt que d'avoir des animations "foireuses" ;)
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
3 avril 2017 à 23:06
Oui j'aurais aimé faire apparaître les champs un par un indépendamment de l'utilisateur. Le même principe que mon code actuel mais adapté à une apparition en chaîne. Si c'est faisable je suppose que cela doit se faire avec un système d'ID. Initialisation de l'animation, sélection des différentes vues (TextView, ImageView... etc) avec leur ID, association de l'animation aux vues, lancement de l'animation. J'ai essayé de bricoler un peu le code pour voir ce que cela donne mais ça ne fonctionne pas. Soit c'est impossible à faire soit je m'y prends mal.
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 3 894
4 avril 2017 à 09:12
Soit c'est impossible à faire soit je m'y prends mal.
J'ai bien une réponse à te donner...mais tu devrais la deviner toi-même
^^'
.
Avec du temps, rien n'est impossible en programmation. Ta demande n'a rien de irréelle, il suffit d'enchainer les animations: quand l'une est terminée, tu lances la suivante. Si tu t'es documenté un peu, tu as du voir une callback onAnimationEnd() qui te notifie de la fin de l'anim.
Mais, encore une fois, trop d'animations tue l'animation. D'un point de vue utilisateur, j'ai envie d'avoir accès rapidement à l'information plutôt que de voir des animations "inutiles" dans tous les sens. Mais c'est à toi de voir.
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
4 avril 2017 à 13:13
Merci je vais regarder ça. Ce serait un enchaînement d'animation fluide qui prendrait à tout casser 2 ou 3 secondes. C'est juste pour faire un effet d'apparition de haut en bas. ;-)
0