Comment démarrer Animation immédiatement après onCreate?
Je suis http://developer.android.com/guide/topics/graphics/view-animation.html#frame-animation avec des changements mineurs. J'ai décidé de faire de l'animation en boucle et il veut commencer à partir de l'obtenir-aller.
Mon animation est à drawable/listening.xml:
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/l_01"
android:duration="200" />
<item
android:drawable="@drawable/l_02"
android:duration="200" />
<item
android:drawable="@drawable/l_03"
android:duration="200" />
</animation-list>
et mon code d'initialisation:
@Override public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
animImg = (ImageView)findViewById(R.id.listen_anim);
animImg.setBackgroundResource(R.drawable.listening);
anim = (AnimationDrawable) animImg.getBackground();
anim.start();
};
Tout ce que je vois est la première image et pas d'autres images.
source d'informationauteur hunterp
Vous devez vous connecter pour publier un commentaire.
C'est déjà écrit dans le tutoriel:
Il est important de noter que la méthode start() appelée sur le AnimationDrawable ne peut pas être appelé pendant le onCreate() la méthode de votre Activité, parce que le AnimationDrawable n'est pas encore pleinement attaché à la fenêtre.
Si vous voulez jouer l'animation immédiatement, sans exiger l'interactionalors vous voudrez peut-être appeler à partir de la onWindowFocusChanged() dans votre Activité, qui sera appelée quand Android apporte à votre fenêtre.
Donc déplacer votre appel pour démarrer dans l'un de ces deux endroits, en fonction de votre souhait. Basé sur votre commentaire, déplacez votre appel pour commencer à l'intérieur de onWindowsFocusChanged().
MODIFIER
C'est donc "Comment le faire",:
Les points d'attention sont les suivants:
Ont un indicateur défini dans
onAttachedToWindow()
puis dansonWindowFocusChanged()
vérifier et de démarrer l'animation.Mise à jour
Simplement étendre la
ImageView
classe et substitueronFocusChange
méthode. Puis dans votre activité définir le focus en appelantanimImg.requestFocus()
. L'animation doit démarrer quand il fait de concentré. Assurez-vous que votre imageview peut recevoir le focus.Si cela ne fonctionne pas, vous pouvez remplacer la
onAttachedToWindow()
méthode aussi. Définir un indicateur dans l'entrée avant de commencer l'animation.Vous pouvez utiliser le
post
méthode deView
sur l'activité. Il doit probablement ressembler à ceci:Vous avez besoin pour donner le temps à l'INTERFACE utilisateur du gestionnaire de créer appropriée des ressources AVANT de commencer l'animation. Modèle Correct est
Ne pas créer et démarrer dans la même méthode.
Cela peut aider
Exécuter ce dans onResume():