web-dev-qa-db-fra.com

Répéter l'animation par impulsions

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>
16
Skyrisu

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();
58
A. Adam

Vous pouvez définir des valeurs startOffset pour chaque animation de votre ensemble.

0
Mus

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.

0
QArea