2010-07-26 17 views
-1

Je dois répéter la séquence d'images que j'utilise avec Thread et AnimationDrawable mais cela ne fonctionne pas continuellement. Je ne veux pas arrêter cette animation jusqu'à ce que l'activité suivante soit lancée via un événement de clic sur un bouton.animation d'image dans android

Voici mon code java:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);{ 

final ImageView splashImage=(ImageView)findViewById(R.id.heartFunction); 
    splashImage.setBackgroundResource(R.drawable.slide_right); 
    splashAnimation = (AnimationDrawable) splashImage.getBackground(); 
} 




public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 

    if (isFocused) { 
     //isFocused = false; 

     splashAnimation.start(); 
     var=false; 
     new Thread(new Runnable() { 
     public void run() { 
      try { 
       Thread.sleep(SPLASH_DISPLAY_LENGTH); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 
} 

slide_right.xml: -

<?xml version="1.0" encoding="utf-8"?> 
<animation-list 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:oneshot="true"> 

<item android:drawable="@drawable/heartcolored0" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored2" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored4" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored5" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored6" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored7" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored8" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored9" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored10" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored11" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored12" android:duration="200" /> 
<item android:drawable="@drawable/heartcolored13" android:duration="200" /> 

</animation-list> 
+0

s'il vous plaît modifier votre code pour le rendre lisible. – Sephy

Répondre

2

Si vous voulez que votre animation pour exécuter contiuously alors vous devez définir android:oneshot="false"

Vous disiez avant de courir seulement une fois.

Si vous souhaitez qu'une animation soit exécutée jusqu'à ce que vous cliquiez sur l'écran pour passer à l'activité suivante. Démarrez l'animation lorsque la fonction onWindowFocusChanged

@Override 
public void onWindowFocusChanged(boolean hasFocus){ 
    splashanimation.start(); 
} 

Ensuite, utilisez un onTouchEvent pour attraper le contact, démarrer une nouvelle activité et terminer l'ancienne activité.

@Override 
public boolean onTouchEvent(MotionEvent event){ 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      Intent i = new Intent(Anim.this, Main.class); 
      startActivity(i); 
      finish(); 
    } 
return true; 
} 

J'espère que cela aide, votre question est très difficile à lire/comprendre.