J'essaie de créer un effet de pulsation infini dans un ImageView. Mais comment est-il possible de conserver le décalage?
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shareInterpolator="false">
<scale
Android:duration="700"
Android:fromXScale="1"
Android:fromYScale="1"
Android:pivotX="50%"
Android:pivotY="50%"
Android:toXScale="0.5"
Android:toYScale="0.5"/>
<scale
Android:duration="700"
Android:fromXScale="1"
Android:fromYScale="1"
Android:pivotX="50%"
Android:pivotY="50%"
Android:startOffset="700"
Android:toXScale="2"
Android:toYScale="2"/>
</set>
Ainsi, votre vue (Image) pulsera jusqu'à 1,2 fois sa taille et vice-versa, à plusieurs reprises.
ImageView iv = (ImageView) findViewById(R.id.my_imageview);
ObjectAnimator scaleDown = ObjectAnimator.ofPropertyValuesHolder(
iv,
PropertyValuesHolder.ofFloat("scaleX", 1.2f),
PropertyValuesHolder.ofFloat("scaleY", 1.2f));
scaleDown.setDuration(310);
scaleDown.setRepeatCount(ObjectAnimator.INFINITE);
scaleDown.setRepeatMode(ObjectAnimator.REVERSE);
scaleDown.start();
Vous pouvez définir des valeurs startOffset
pour chaque animation de votre ensemble.
Si vous souhaitez créer une animation infinie, le meilleur moyen est de créer une vue personnalisée et de créer votre animation onDraw. Par exemple: Comment animer un chemin sur une toile - Android
En fait, vous pouvez aussi faire de l'animation avec SurfaceView.