重复脉冲动画

29

我试图在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>
3个回答

106

这将使您的(图像)视图以最多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();

9
建议为了让这个动作更加自然,添加一个插值器,就像这样:scaleDown.setInterpolator(new FastOutSlowInInterpolator()); - Aleksander Lech
2
你如何在动画之间暂停? - IgorGanapolsky
我尝试过这种方法,但会导致边缘不平滑,使用动态矢量图形会更加清晰。 - Etienne Lawlor
我可以在XML中制作这个动画吗? - Mateen Chaudhry
很棒的回答 :) - Gundu Bandgar
简单整洁 - Ally

0

您可以为动画集中的每个动画设置startOffset值。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接