Android规模图像视图与动画

时间:2015-11-25 12:14:54

标签: android android-animation android-imageview

我有一个ImageView,并希望通过动画缩小它。 我用

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <scale
        android:fromXScale="1.0"
        android:toXScale="0.7"
        android:fromYScale="1.0"
        android:toYScale="0.7"
        android:pivotX="50%"
        android:pivotY="10%"
        android:duration="1500" />
</set>

这很好用。但是在动画完成后,图像会恢复到原始大小。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

尝试使用此代码,它不会在动画后重置图像大小,此处视图是您要设置动画的图像视图。

ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(view, "scaleX", 0.5f);
ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(view, "scaleY", 0.5f);
scaleDownX.setDuration(1000);
scaleDownY.setDuration(1000);

AnimatorSet scaleDown = new AnimatorSet();
scaleDown.play(scaleDownX).with(scaleDownY);

scaleDown.start();

答案 1 :(得分:4)

好的,我找到了解决方案。这是正确的吗?还是很快又脏? ^^

    ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(image, "scaleX", 0.7f);
    ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(image, "scaleY", 0.7f);
    scaleDownX.setDuration(1500);
    scaleDownY.setDuration(1500);

    ObjectAnimator moveUpY = ObjectAnimator.ofFloat(image, "translationY", -100);
    moveUpY.setDuration(1500);

    AnimatorSet scaleDown = new AnimatorSet();
    AnimatorSet moveUp = new AnimatorSet();

    scaleDown.play(scaleDownX).with(scaleDownY);
    moveUp.play(moveUpY);

    scaleDown.start();
    moveUp.start();

答案 2 :(得分:0)

一个简单的答案在下面;

imageview.animate().translationY(-200F).duration = 500
imageview.animate().scaleY(0.4F).duration = 500
imageview.animate().scaleX(0.4F).duration = 500