о анимации super.onBackPressed () - PullRequest
0 голосов
/ 11 мая 2018

Android о super.onBackPressed () animate,9

1002 *

В программе входа в систему 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();}

method onBackPressed()

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

1 Ответ

0 голосов
/ 11 мая 2018

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

1 /

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

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

2 /

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

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

Существует 2 варианта исправления:

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