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>
これにより、(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();
セット内のアニメーションごとにstartOffset
値を設定できます。
無限のアニメーションを作成したい場合は、カスタムビューを作成し、onDrawでアニメーションを作成するのが最善の方法です。例: キャンバス上のパスをアニメーション化する方法-Android
実際には、SurfaceViewでもアニメーションを作成できます。