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