2010-10-12 8 views
1

J'utilise une animation d'image pour afficher certaines images. Mais cela ne fonctionne que dans une action de bouton. Je veux appeler cette fonction quand le programme démarre. Comment puis-je y parvenir sans un bouton?Animation de cadre sous Android?

J'utilise le code suivant pour l'animation:

public class FrameAnimationActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     this.setupButton(); 
    } 
    private void setupButton(){ 
     Button b = (Button)this.findViewById(R.id.startFAButtonId); 
     b.setOnClickListener(
      new Button.OnClickListener(){ 
      public void onClick(View v){ 
       parentButtonClicked(v); 
      } 
      }); 
    } 
    private void parentButtonClicked(View v){ 
     animate(); 
    } 
    private void animate(){ 
     ImageView imgView = (ImageView)findViewById(R.id.imageView); 
     imgView.setVisibility(ImageView.VISIBLE); 
     imgView.setBackgroundResource(R.drawable.frame_animation); 
     AnimationDrawable frameAnimation = (AnimationDrawable) imgView.getBackground(); 
     if (frameAnimation.isRunning()){ 
      frameAnimation.stop(); 
     } 
     else{ 
      frameAnimation.stop(); 
      frameAnimation.start(); 
     } 
    } 
} 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> 
    <item android:drawable="@drawable/colored-ball1" android:duration="50" /> 
    <item android:drawable="@drawable/colored-ball2" android:duration="50" /> 
    <item android:drawable="@drawable/colored-ball3" android:duration="50" /> 
    <item android:drawable="@drawable/colored-ball4" android:duration="50" /> 
    <item android:drawable="@drawable/colored-ball5" android:duration="50" /> 
    <item android:drawable="@drawable/colored-ball6" android:duration="50" /> 
    <item android:drawable="@drawable/colored-ball7" android:duration="50" /> 
    <item android:drawable="@drawable/colored-ball8" android:duration="50" /> 
</animation-list> 
+0

peut-être vous devriez vérifier les démos de l'API, il vient dans les exemples de votre SDK. Avait été une grande aide pour moi quand j'étais un Noob, et même maintenant .. – Shouvik

+0

@ Shouvik: J'ai obtenu ce code à partir de démos de l'API, mais son ne fonctionne pas à côté de l'action du bouton – Jeff

Répondre

4

sur la documentation de l'Android, vous pouvez trouver les éléments suivants:

« Il est important de noter que la méthode start() a appelé le AnimationDrawable ne peut pas être appelé au cours de la méthode de votre activité onCreate(), parce que le AnimationDrawable n'est pas encore complètement attaché à la fenêtre Si vous voulez lire l'animation immédiatement, sans nécessiter d'interaction, alors vous pouvez l'appeler depuis la méthode onWindowFocusChanged() dans votre Activity, qui sera appelée quand Android amènera votre fenêtre dans le foyer. "

Espérons que ça aide!

3

Lorsque vous cliquez sur le bouton, la seule chose qui arrive est la méthode animate() est appelée. Avez-vous essayé de placer

animate(); 

intérieur de onCreate() et le retirer de parentButtonClicked(View v) afin qu'il appelle Animer lorsque l'activité est créée, plutôt que lorsque le bouton est pressé? Ne vois pas pourquoi ça ne marcherait pas pour toi.

Ensuite, vous aurez également un bouton inutile. :)