web-dev-qa-db-ja.com

パルスアニメーションを繰り返す

ImageViewで無限のパルス効果を作成しようとしています。しかし、どのようにしてオフセットを保つことができるのでしょうか?

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

これにより、(Image)Viewのサイズが最大1.2まで変動し、繰り返し変動します。

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

セット内のアニメーションごとにstartOffset値を設定できます。

0
Mus

無限のアニメーションを作成したい場合は、カスタムビューを作成し、onDrawでアニメーションを作成するのが最善の方法です。例: キャンバス上のパスをアニメーション化する方法-Android

実際には、SurfaceViewでもアニメーションを作成できます。

0
QArea