Похоже, что в документации [0][1] все внимание сосредоточено на Android 14+ и даже не упоминается, как следует обращаться с более ранними версиями. Я немного попробовал и подумал, что это отлично сработает:
Для API 34+ это работает отлично. Переходы открытия и закрытия одинаковы, переход жестом назад выглядит хорошо.
Для API 33 и более ранних версий переход открытия подходит. Закрывающий переход работает нормально при использовании аппаратной кнопки «Назад». Но когда onBackPressedDispatcher.onBackPressed() вызывается в ответ на компонент пользовательского интерфейса, старый метод onBackPressed не вызывается, поэтому overridePendingTransition не вызывается, и переход не является настраиваемым.
Мне трудно это понять, но я не особо возражаю. Я просто хочу, чтобы переходы были последовательными. В этом тривиальном случае я мог бы вызвать overridePendingTransition внутри handleUiStuff, но в других случаях я, вероятно, не хотел бы этого делать, я думаю, при использовании BackHandler и других вещей?
Видео об этом:
[0] https://developer.android.com/guide/nav ... ck-gesture
Похоже, что в документации [0][1] все внимание сосредоточено на Android 14+ и даже не упоминается, как следует обращаться с более ранними версиями. Я немного попробовал и подумал, что это отлично сработает: [code] override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)
@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() } } [/code] Результат: [list] [*]Для API 34+ это работает отлично. Переходы открытия и закрытия одинаковы, переход жестом назад выглядит хорошо. Для API 33 и более ранних версий переход открытия подходит. Закрывающий переход работает нормально при использовании аппаратной кнопки «Назад». Но когда onBackPressedDispatcher.onBackPressed() вызывается в ответ на компонент пользовательского интерфейса, старый метод onBackPressed не вызывается, поэтому overridePendingTransition не вызывается, и переход не является настраиваемым. [/list] Мне трудно это понять, но я не особо возражаю. Я просто хочу, чтобы переходы были последовательными. В этом тривиальном случае я мог бы вызвать overridePendingTransition внутри handleUiStuff, но в других случаях я, вероятно, не хотел бы этого делать, я думаю, при использовании BackHandler и других вещей? Видео об этом: [youtube]BqRXUSfXt5M[/youtube] [0] https://developer.android.com/guide/navigation/custom-back/predictive-back-gesture