Existe-t-il un moyen de laisser la Animation
faire une pause d'une demi-seconde?
J'essaie de créer une animation infinie à l'aide de l'API TranslateAnimation
. Donc, j'utilise la RepeatCount
comme Infinite
. J'ai également remarqué qu'il existe une méthode setStartOffset(...)
qui couvre le cas où j'aimerais retarder le démarrage de l'animation. Cependant, je ne peux pas trouver un moyen d'avoir un délai avant chaque «redémarrage». Puisque l'animation va se passer un nombre infini de fois, chaque fois que l'animation redémarre, je dois mettre un délai.
Des idées?
Merci!!
voici un exemple:
D'abord la mise en page (main.xml) avec une image que nous aimerions animer:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<ImageView
Android:id="@+id/imageView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/ic_launcher" />
</LinearLayout>
La prochaine est l'animation. Placé dans res/anim et s'appelle anim_img.xml. Le fichier contient l'animation de traduction avec Android: startOffset = "500" (en millisec). Cela va définir le décalage, qui est utilisé à chaque démarrage de l'animation:
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:duration="1000"
Android:fromXDelta="0%"
Android:fromYDelta="0%"
Android:toXDelta="0%"
Android:toYDelta="100%"
Android:zAdjustment="top"
Android:repeatCount="infinite"
Android:startOffset="500"/>
</set>
Et le dernier mais non le moindre - l'activité. Qui commence l'animation:
public class StackOverflowActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView iv_icon = (ImageView) findViewById(R.id.imageView1);
Animation a = AnimationUtils.loadAnimation(this, R.anim.anim_img);
a.setFillAfter(true);
a.reset();
iv_icon.startAnimation(a);
}
}
A bientôt, Paul
Pour obtenir une pause de x millisecondes entre chaque redémarrage:
myAnimation.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
myAnimation.setStartOffset(x);
}
});
myanimation.setStartDelay (int);