我希望显示淡入淡出动画的图像数量,但它的工作正常,但完成一次后图像不重复。 我想在循环中展示,我没有得到什么缺少任何人对它有所了解?
我的代码如下所示
MainActivity.java
animationFadeIn = AnimationUtils.loadAnimation(this, R.anim.anim_fade_in);
animationFadeOut = AnimationUtils.loadAnimation(this, R.anim.anim_fade_out);
Animation.AnimationListener animListener = new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
changeImage(animation);
}
};
// Set listener to animation
animationFadeIn.setAnimationListener(animListener);
animationFadeOut.setAnimationListener(animListener);
// Start fade-in animation
imgBanner.setImageResource(R.mipmap.banner1);
imgBanner.startAnimation(animationFadeIn);
public void changeImage(Animation animation) {
if (animation == animationFadeIn) {
// Start fade-out animation
imgBanner.startAnimation(animationFadeOut);
} else if (animation == animationFadeOut) {
count++;
// Set next image after fading out previous image
switch (count) {
case 1:
imgBanner.setImageResource(R.mipmap.banner2);
imgBanner.startAnimation(animationFadeIn);
break;
case 2:
imgBanner.setImageResource(R.mipmap.banner3);
imgBanner.startAnimation(animationFadeIn);
break;
case 3:
imgBanner.setImageResource(R.mipmap.banner4);
imgBanner.startAnimation(animationFadeIn);
break;
case 4:
imgBanner.setImageResource(R.mipmap.banner5);
imgBanner.startAnimation(animationFadeIn);
break;
default:
break;
}
}
}
anim_fade_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:duration="2000"
android:fromAlpha="0.1"
android:toAlpha="1.0" />
</set>
anim_fade_out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:duration="2000"
android:fromAlpha="1.0"
android:toAlpha="0.1" />
</set>
答案 0 :(得分:0)
据我所知,你希望changeImage
函数的开关案例在你达到count = 4后循环。你只需在开关案例之前放置count = count % 4
即可。这样,您的计数将始终保持在0-3之间,您可以正确地循环显示图像。您还需要更改开关案例。代码变为:
else if (animation == animationFadeOut) {
count++;
count = count % 4; // Enable recycling the count variable
// Set next image after fading out previous image
switch (count) {
case 0: // Change cases such that count values form 0-3 are addressed
imgBanner.setImageResource(R.mipmap.banner2);
imgBanner.startAnimation(animationFadeIn);
break;
case 1:
imgBanner.setImageResource(R.mipmap.banner3);
imgBanner.startAnimation(animationFadeIn);
break;
case 2:
imgBanner.setImageResource(R.mipmap.banner4);
imgBanner.startAnimation(animationFadeIn);
break;
case 3:
imgBanner.setImageResource(R.mipmap.banner5);
imgBanner.startAnimation(animationFadeIn);
break;
default:
break;
}
目前你的计数在一个点上变为5,并且开关案例忽略它,因此没有运行另一个动画。