О анимации super.onBackPressed()

Android про super.onBackPressed() покажите анимацию

  • В программе входа в Android нажмите правую нижнюю кнопку регистрации, чтобы показать анимацию открытия страницы регистрации, а затем в левом нижнем углу появится анимация, чтобы вернуться к кнопке страницы входа. Хорошо, все в порядке.

  • Я бы нажал левую кнопку входа внизу страницы, и там была бы анимация, чтобы закрыть страницу регистрации, а анимация, отображаемая справа внизу, показала бы кнопку страницы входа. Но есть проблемы с реализация. После закрытия анимации, анимация кнопки, показывающая страницу входа, не может быть отображена. Я думаю, потому что RegisterActivity. Super. OnBackPressed () Я не знаю что делать. Спасибо

Исходный код:

 /**
 * Close the page animation
 */
public void animateRevealClose() {
    int centerX = (mCardViewRegister.getWidth()) / 2;
    int centerY = (mToSignUpCardView.getTop() + mToSignUpCardView.getBottom()) / 2;
    int startRadius = mCardViewRegister.getHeight();
    int endRadius = mToSignUpCardView.getWidth() / 2;
    Animator mAnimator = ViewAnimationUtils.createCircularReveal(
            mCardViewRegister,
            centerX,
            centerY,
            startRadius,
            endRadius);
    mAnimator.setDuration(500);
    mAnimator.setInterpolator(new AccelerateInterpolator());
    mAnimator.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            BottomFastSignUp(); //The bottom button displays the animation.
            mCardViewRegister.setVisibility(View.INVISIBLE);
            super.onAnimationEnd(animation);
            RegisterActivity.super.onBackPressed();
        }

        @Override
        public void onAnimationStart(Animator animation) {
            super.onAnimationStart(animation);
        }
    });
    mAnimator.start();}

метод onBackPressed()

  @Override
public void onBackPressed() {
    animateRevealClose();
    super.onBackPressed();
}

1 ответ

Решение

Вот что я понимаю из нашей дискуссии:

1 /

Вы запускаете анимацию закрытия при нажатии кнопки "Назад", но затем вызываете super.onBackPressed() немедленно, что завершает деятельность, и любая настройка анимации бесполезна.

Так удали super.onBackPressed(); это первое исправление.

2 /

В конце события закрытия анимации вы вызываете BottomFastSignUp это еще одна анимация, но снова вызов RegisterActivity.super.onBackPressed();, Это завершает действие, и анимация снова становится бесполезной.

Поэтому, чтобы это исправить, не завершайте упражнение до того, как все анимации будут завершены.

Есть 2 варианта исправления:

  • Слушать BottomFastSignUp конец анимации и вызов finish там.
  • Переехать BottomFastSignUp в LoginActivity, Вы можете закончить RegisterActivityпереопределить onActivityReenter в LoginActivity и сделать BottomFastSignUp там вместо
Другие вопросы по тегам