Остановить анимационные эффекты после возобновления активности - PullRequest
0 голосов
/ 03 апреля 2019

Я добавил несколько анимаций для вида.
После запуска действия все анимации начинают анимироваться. После остановки эффекта анимации я перехожу к другой активности в том же приложении. Когда я снова возвращаюсь к действию, в котором существует анимация, все анимации снова начинают анимироваться, но это не требуется.

Мне нужно остановить этот эффект анимации после вызова возобновления в действии. Я не мог найти никаких решений для этого. Есть предложения?

ОБНОВЛЕНИЕ: Я добавляю всю анимацию init и начинаю с метода onCreate().

ОБНОВЛЕНИЕ:

Анимации инициируются в методе onCreate()

sparkButton.setVisibility(View.GONE);
        welcomeLayout.setVisibility(View.VISIBLE);
        AnimationSet animationSet = new AnimationSet(true);
        animationSet.setFillEnabled(true);
        animationSet.setInterpolator(new BounceInterpolator());
        Animation animation1 = AnimationUtils.loadAnimation(this, R.anim.welcome_slide_right_left);

        animation1.setDuration(700);
        animationSet.addAnimation(animation1);

        final AnimationSet animationSet2 = new AnimationSet(true);
        ScaleAnimation animation2 = new ScaleAnimation(1.0f, 0.14f, 1.0f, 1.0f, Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f);

        animation2.setDuration(400);
        animation2.setStartOffset(400);
        animationSet2.addAnimation(animation2);

        animationSet.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                welcomeLayout.setAnimation(animationSet2);
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        animationSet2.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                welcomeLayout.setVisibility(View.GONE);
                sparkButton.setVisibility(View.VISIBLE);
                sparkButton.playAnimation();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

        welcomeLayout.setAnimation(animationSet);

Я поставил источник, как показано выше. Этот вопрос необходимо прояснить, и я отмечу ответ как решение для взлома. Если это проблема объекта Animation, с которой мы не справились должным образом, я хочу решить

ОБНОВЛЕНИЕ: Кнопка активности, чтобы перейти к другой активности

        case R.id.spark_button: {
            // network checking code will append here
            // after that calls the activity
            startActivity(new Intent(SettingsActivity.this, HomeActivity.class));
            break;
        }

Ответы [ 4 ]

1 голос
/ 03 апреля 2019

Вы можете создать логическое значение и проверять его всегда, когда ваша деятельность начинается;

boolean shouldShowAnimation = true;   

@Override
public void onResume(){       
    super.onResume();
    if(shouldShowAnimation) {
       shouldShowAnimation = false;
       // Your animation
    }
}
1 голос
/ 03 апреля 2019

вызов clearAnimation() метод для View, который анимируется в методе onStop() вашего activity, а не в onResume, поскольку он также запускается при первом запуске активности

1 голос
/ 03 апреля 2019

Вы можете попробовать как WorkAround поместить свой стартовый код анимации в условие, подобное этому, в onCreate

if(null == savedBundleState) {
 ////Play your Animation
 }
0 голосов
/ 03 апреля 2019

Вызовите clearAnimation () для любого вида, который вы называете startAnimation ().

Надеюсь, это поможет!

...