Android - Общие переходы элементов с завершением активности вызова()
Я работаю над созданием приложения more Material, и я просто зациклился на том, как реализовать некоторые общие переходы элементов. У меня есть действие A, которое запускает другой B, а затем вызывает finish(), чтобы удалить его из заднего стека. В моем случае у меня есть элемент, который я хочу разделить между этими двумя действиями, но как только он передается от A до B, A больше не имеет значения.
Если я не назову финиш() после startActivity (ctx, intent, bundle), анимация выхода/ввода работает отлично. Однако, если я назову финиш, там действительно уродливое мерцание перед началом анимации.
Есть ли что-то, что я пропускаю, или просто невозможно сделать то, что я пытаюсь сделать?
Ответы
Ответ 1
Вы можете завершить свою деятельность в функции onStop, если вы хотите, чтобы это произошло, когда вы переходите с A на B, затем создайте флаг и установите его после вызова startActivity (ctx, intent, bundle):
@Override
public void onStop() {
super.onStop();
if(mShouldFinish)
finish();
}
Удостоверьтесь, что когда вы закончили работу B, чтобы вызвать finish(), а не finishAfterTranstion(), поскольку активность A больше не существует
После завершения операции A общий элемент в B может зависать на экране, если вы нажмете назад. Установите для параметра transitionName значение null в ActivityB.onEnterAnimationComplete
, чтобы избежать этого.
Ответ 2
ОБНОВЛЕНИЕ
Гораздо лучший и простой способ
ActivityCompat. finishAfterTransition(this);
< 3 библиотека поддержки.
Ответ 3
Попробуйте метод finishAfterTransition() в 5.0 и выше, вы можете закончить действие после перехода на выход.
Ответ 4
Возможно, это было поздно, но у меня была такая же проблема.
Что для меня работало:
supportFinishAfterTransition();
Это включено в библиотеку поддержки и работает как прелесть.
PS: вам не нужно вызывать finish()
при вызове supportFinishAfterTransition()
.