完成一次后图像不重复

时间:2017-09-09 05:45:04

标签: android image animation

我希望显示淡入淡出动画的图像数量,但它的工作正常,但完成一次后图像不重复。 我想在循环中展示,我没有得到什么缺少任何人对它有所了解?

我的代码如下所示

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>

1 个答案:

答案 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,并且开关案例忽略它,因此没有运行另一个动画。