Android:ImageView中不使用ScaleAnimation后填充

Android:ImageView中不使用ScaleAnimation后填充,android,Android,我在ImageView中应用了三个动画,一个接一个。每个动画都有一个AnimationListener,因此在onAnimationEnd中,我开始下一个动画,这样它们就不会重叠。动画是这样的:缩放、淡出和最后一个淡入。淡入动画将重新启动缩放动画,使这些动画“永远”运行。我试图达到的效果与Twitter应用于他们新的主屏幕的效果相同,他们在主屏幕上不断更改图片 我的动画的问题是,在ImageView中进行缩放后,在开始淡出动画之前,ImageView会重置,缩放更改会丢失,甚至在代码或xml文件

我在ImageView中应用了三个动画,一个接一个。每个动画都有一个AnimationListener,因此在onAnimationEnd中,我开始下一个动画,这样它们就不会重叠。动画是这样的:缩放、淡出和最后一个淡入。淡入动画将重新启动缩放动画,使这些动画“永远”运行。我试图达到的效果与Twitter应用于他们新的主屏幕的效果相同,他们在主屏幕上不断更改图片

我的动画的问题是,在ImageView中进行缩放后,在开始淡出动画之前,ImageView会重置,缩放更改会丢失,甚至在代码或xml文件中设置fillAfter。以下是处理动画事件的代码:

    mAnimationFadeIn = AnimationUtils.loadAnimation(this, R.anim.fade_in);
    mAnimationFadeIn.setFillAfter(true);
    mAnimationFadeOut = AnimationUtils.loadAnimation(this, R.anim.fade_out);
    mAnimationFadeOut.setFillAfter(true);
    mAnimationScaleIn = AnimationUtils.loadAnimation(this, R.anim.slow_scale_in);
    mAnimationScaleIn.setFillAfter(true);
    mAnimationScaleIn.setFillEnabled(true);
    mAnimationScaleIn.setFillBefore(false);
    mAnimationScaleIn.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {}

        @Override
        public void onAnimationRepeat(Animation animation) {}

        @Override
        public void onAnimationEnd(Animation animation) {
            mImageView.startAnimation(mAnimationFadeOut);
        }
    });

    mAnimationFadeOut.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {}

        @Override
        public void onAnimationRepeat(Animation animation) {}

        @Override
        public void onAnimationEnd(Animation animation) {
            mImageView.setImageResource(mImages[++mImageIndex > 2 ? mImageIndex=0 : mImageIndex]);
            mImageView.startAnimation(mAnimationFadeIn);
        }
    });

    mAnimationFadeIn.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {}

        @Override
        public void onAnimationRepeat(Animation animation) {}

        @Override
        public void onAnimationEnd(Animation animation) {
            mImageView.startAnimation(mAnimationScaleIn);
        }
    });

    mImageView.startAnimation(mAnimationScaleIn);
以下是我的动画:

按比例:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:duration="9000"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50.0%"
    android:pivotY="50.0%"
    android:toXScale="1.1"
    android:toYScale="1.1" />

淡入:

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toAlpha="1.0" />

淡出:

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="1.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toAlpha="0.0" />

在开始淡出动画之前,是否有方法保持缩放变换? 我已经尝试了setFillAfter、setFillBefore和setFillEnabled的所有组合,但我无法在缩放动画结束后保持缩放变换

非常感谢
T

按照下面给出的方法执行,您必须在设置标记中启用它,然后在旋转缩放等中使用它

<?xml version="1.0" encoding="UTF-8"?>
 <set android:shareInterpolator="false" 
 android:fillEnabled="true"
 android:fillAfter="true" 
 xmlns:android="http://schemas.android.com/apk/res/android">

<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="359"
android:pivotX="50%"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="1.4"
android:pivotY="50%"
android:fillAfter="true"
android:fillEnabled="true"
android:duration="2000" />

<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%" 
android:fillEnabled="true"
android:fillAfter="true"
android:duration="2000" /> 

</set>

你说的“旋转或缩放”是什么意思?fillEnabled仅适用于fillBefore。