Навигация по жестам назад + переходы назад по API <34 работают некорректноAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Навигация по жестам назад + переходы назад по API <34 работают некорректно

Сообщение Anonymous »

Похоже, что в документации [0][1] все внимание сосредоточено на Android 14+ и даже не упоминается, как следует обращаться с более ранними версиями. Я немного попробовал и подумал, что это отлично сработает:

Код: Выделить всё

    override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
overrideActivityTransition(AppCompatActivity.OVERRIDE_TRANSITION_OPEN, R.anim.slide_in_from_bottom, 0)
overrideActivityTransition(AppCompatActivity.OVERRIDE_TRANSITION_CLOSE, R.anim.stay, R.anim.slide_out_to_bottom)
} else {
@Suppress("DEPRECATION")
overridePendingTransition(R.anim.slide_in_from_bottom, R.anim.stay)
}

//...

@Suppress("DEPRECATION")
@Deprecated("")
override fun onBackPressed() {
super.onBackPressed()
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
@Suppress("DEPRECATION")
overridePendingTransition(R.anim.stay, R.anim.slide_out_to_bottom)
}
}

//...

fun handleUiStuff() {
onCloseButtonClick = { onBackPressedDispatcher.onBackPressed() }
}
Результат:
  • Для API 34+ это работает отлично. Переходы открытия и закрытия одинаковы, переход жестом назад выглядит хорошо.
    Для API 33 и более ранних версий переход открытия подходит. Закрывающий переход работает нормально при использовании аппаратной кнопки «Назад». Но когда onBackPressedDispatcher.onBackPressed() вызывается в ответ на компонент пользовательского интерфейса, старый метод onBackPressed не вызывается, поэтому overridePendingTransition не вызывается, и переход не является настраиваемым.
Мне трудно это понять, но я не особо возражаю. Я просто хочу, чтобы переходы были последовательными. В этом тривиальном случае я мог бы вызвать overridePendingTransition внутри handleUiStuff, но в других случаях я, вероятно, не хотел бы этого делать, я думаю, при использовании BackHandler и других вещей?
Видео об этом:
[0] https://developer.android.com/guide/nav ... ck-gesture

[1] https://developer.android.com/guide/navigation/custom- назад/поддержка-анимации

Подробнее здесь: https://stackoverflow.com/questions/787 ... king-consi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»