Jeśli aplikacja została już przeniesiona do nowych interfejsów API systemu, możesz: włącz prognozowanie z powrotem, aby automatycznie otrzymywać reklamy w aplikacji ani animacji, i obsługują przejścia niestandardowe.
Dodanie obsługi wbudowanych animacji w aplikacji
Gdy włączysz tę funkcję, aplikacja będzie wyświetlać animacje powrót do strony głównej, i wielozadaniowość.
Możesz też uaktualnić zależność komponentów Material Design do wersji 1.10.0 MDC Android może odbierać animacje komponentu Materiał, takie jak:
Aby dowiedzieć się więcej, zapoznaj się ze wskazówkami dla deweloperów dotyczącymi komponentów materiałów na GitHubie. i informacjami o nich.
Film przedstawia krótki przykład animacji przejścia wstecz w przypadku do wielu aktywności i powrót do domu w aplikacji Ustawienia na Androidzie.
- W animacji użytkownik przesuwa palcem z powrotem, aby wrócić do poprzednich ustawień. screen – przykład animacji przedstawiającej różne aktywności.
- Na poprzednim ekranie użytkownik zaczyna przesuwać palcem po raz drugi, podgląd ekranu głównego z tapetą (przykład: animację powrotu na stronę główną.
- Użytkownik nadal przesuwa w prawo, pokazując animację okna. zmniejsza się do ikony na ekranie głównym.
- Użytkownik wrócił w pełni do ekranu głównego.
Dowiedz się więcej o wspieraniu funkcji przewidywania tekstu wstecz.
Dodawanie niestandardowych przejść i animacji w aplikacji
Niestandardowe animacje i przejścia usługi w aplikacji możesz tworzyć za pomocą
Interfejs Progress API i niestandardowa metoda animacji opartych na aktywnościach
overrideActivityTransition
Dodawanie niestandardowych przejść za pomocą interfejsu Progress API
W AndroidX Activity w wersji 1.8.0-alfa01 lub nowszej możesz używać funkcji przewidywania
Interfejsy API postępu umożliwiające tworzenie niestandardowych animacji
gestu przewidywania tekstu wstecz w aplikacji. W ciągu
OnBackPressedCallback
wprowadziliśmy handleOnBackProgressed
, handleOnBackCancelled
i
Metody handleOnBackStarted
do animowania obiektów, gdy użytkownik przesuwa palcem do tyłu. Używaj
jeśli potrzebujesz bardziej niestandardowych animacji niż domyślne:
dostarczane przez nowe animacje systemowe lub animacje komponentu Material Material.
Spodziewamy się, że większość aplikacji będzie korzystać ze zgodnych wstecznie interfejsów API AndroidaX, ale
także interfejsami API podobnych platform w ramach
OnBackAnimationCallback
interfejs dostępny do testowania w wersji przedpremierowej dla programistów Androida 14 w wersji 1 lub nowszej.
Korzystanie z interfejsów Progress API w przypadku przejść z AndroidemX
Interfejsów Progress API można używać z AndroidX Migrates w wersji 1.5.0-alpha01 lub nowszej w Androidzie 14 i nowszych, aby tworzyć przewidywane przejścia wstecz.
- Użyj
TransitionManager#controlDelayedTransition
zamiastbeginDelayedTransition
, aby odtwarzać przejścia jako: użytkownik przesunie palcem do tyłu. - Utwórz przejście w usłudze
handleOnBackStarted
. - Odtwórz przejście ze zdarzeniem wstecz w ciągu
handleOnBackProgressed
do dotyczące:currentFraction
iBackEvent.progress
, co pokazuje, jak daleko użytkownik przesunął palcem do tyłu. - Zakończ przenoszenie po zatwierdzeniu gestu cofania przez użytkownika
handleOnBackPressed
- Na koniec zresetuj stan przejścia w usłudze
handleOnBackCancelled
.
Niestandardowe przejście pokazano w poniższym filmie, kodzie Kotlin i XML
między dwoma polami zaimplementowanymi za pomocą algorytmu OnBackPressedCallback
:
class MyFragment : Fragment() {
val transitionSet = TransitionSet().apply {
addTransition(Fade(Fade.MODE_OUT))
addTransition(ChangeBounds())
addTransition(Fade(Fade.MODE_IN))
}
...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val callback = object : OnBackPressedCallback(enabled = false) {
var controller: TransitionSeekController? = null
@RequiresApi(34)
override fun handleOnBackStarted(backEvent: BackEvent) {
// Create the transition
controller = TransitionManager.controlDelayedTransition(
binding.card,
transitionSet
)
changeTextVisibility(ShowText.SHORT)
}
@RequiresApi(34)
override fun handleOnBackProgressed(backEvent: BackEvent) {
// Play the transition as the user swipes back
if (controller?.isReady == true) {
controller?.currentFraction = backEvent.progress
}
}
override fun handleOnBackPressed() {
// Finish playing the transition when the user commits back
controller?.animateToEnd()
this.isEnabled = false
}
@RequiresApi(34)
override fun handleOnBackCancelled() {
// If the user cancels the back gesture, reset the state
transition(ShowText.LONG)
}
}
binding.shortText.setOnClickListener {
transition(ShowText.LONG)
callback.isEnabled = true
}
this.requireActivity().onBackPressedDispatcher.addCallback(callback)
}
private fun transition(showText: ShowText) {
TransitionManager.beginDelayedTransition(
binding.card,
transitionSet
)
changeTextVisibility(showText)
}
enum class ShowText { SHORT, LONG }
private fun changeTextVisibility(showText: ShowText) {
when (showText) {
ShowText.SHORT -> {
binding.shortText.isVisible = true
binding.longText.isVisible = false
}
ShowText.LONG -> {
binding.shortText.isVisible = false
binding.longText.isVisible = true
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
...
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...>
<TextView
android:id="@+id/short_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
... />
<TextView
android:id="@+id/long_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
.../>
</androidx.constraintlayout.widget.ConstraintLayout>
Podczas pracy z prognozowanym przejściem wstecznym pamiętaj o tych kwestiach:
- Użyj funkcji
isSeekingSupported
, aby sprawdzić, czy przejście obsługuje funkcję przewidywania Wstecz. - Zastąp
isSeekingSupported
, aby niestandardowych przejściach zwracać wartość „prawda”. - Utwórz po 1 kontrolerze na animację.
- Przewidywane przejścia wstecz są obsługiwane w przypadku przejścia w AndroidzieX, ale nie w przypadku przejścia na nową platformę. Zalecamy odejście od platformy przejścia.
- Przewidywanie przejścia wstecz jest obsługiwane na urządzeniach z Androidem 14 lub nowszym nie są zgodne wstecznie.
- Przejścia utworzone przy użyciu scen XML również są obsługiwane. W
handleOnBackStarted
, ustawTransitionSeekController
na wynikTransitionManager.createSeekController
zamiast wynikucontrolDelayedTransition
.
Dodawanie niestandardowych przeniesień aktywności na Androidzie 14 i nowszych
Aby zapewnić, że niestandardowe przenoszenie aktywności będzie obsługiwać prognozowanie na Androidzie 14.
lub wyższej, możesz używać overrideActivityTransition
zamiast
overridePendingTransition
Oznacza to, że animacja przejścia jest odtwarzana jako
użytkownik przesunie palcem do tyłu.
Aby podać przykład, jak to może działać, wyobraźmy sobie scenariusz, w którym Ćwiczenie B znajduje się nad Aktywnością A z tyłu. Zajmujesz się personalizacją Animacje aktywności:
- Wywołaj przejścia otwierające lub zamykające w
onCreate
aktywności B. . - Gdy użytkownik przejdzie do Aktywności B, użyj polecenia
OVERRIDE_TRANSITION_OPEN
. Kiedy użytkownik przesuwa palcem, aby wrócić do aktywności A, użyjOVERRIDE_TRANSITION_CLOSE
Przy określaniu
OVERRIDE_TRANSITION_CLOSE
enterAnim
jest aktywności A wprowadź animację, aexitAnim
to animacja wyjścia aktywności B.