Uygulamanızı zaten yeni sistem geri API'lerine taşıdıysanız şunları yapabilirsiniz: uygulama içi e-postaları otomatik olarak almak için tahmini geri almayı etkinleştirin animasyonları destekler ve özel geçişleri de destekler.
Yerleşik uygulama içi animasyonlar için destek eklendi
Etkinleştirildikten sonra uygulamanızda ana sayfaya geri dönüş, çapraz etkinlik, etkinlik sonu yeni bir beceridir.
Malzeme bileşeni bağımlılığınızı MDC'nin v1.10.0 sürümüne de yükseltebilirsiniz Aşağıdaki gibi malzeme bileşeni animasyonları almak için Android:
Daha fazla bilgi için GitHub'da malzeme bileşen geliştirici kılavuzuna bakın ekleyebilirsiniz.
Bu videoda, şunun için tahmini geri animasyonlara dair kısa bir örnek çapraz etkinlik ve ana sayfaya geri dönme özelliklerini kullanabilirsiniz.
- Animasyonda kullanıcı önceki ayarlara dönmek için ekranı geri kaydırıyor ekranı gibi gösterilir.
- Önceki ekranda kullanıcı ikinci bir kez geri kaydırmaya başlıyor. Duvar kağıdıyla birlikte ana ekranın bir önizlemesini gösteriyor. Örneğin, ana ekrana dönüş animasyonunu oluşturur.
- Kullanıcı, ekranı sağa kaydırmaya devam ederek pencerenin animasyonu gösterilir ana ekrandaki simgeye küçültülür.
- Kullanıcı tamamen ana ekrana döndü.
Tahmine dayalı geri bildirimi destekleme hakkında daha fazla bilgi edinin.
Özel uygulama içi geçişler ve animasyonlar ekleme
Özel uygulama içi mülk animasyonları ve geçişleri oluşturmak için
Progress API ve özel etkinlikler arası animasyonlar yöntemi
overrideActivityTransition
Progress API'yi kullanarak özel geçişler ekleme
AndroidX Etkinliği 1.8.0-alpha01 veya sonraki sürümlerde Tahmine Dayalı Geri gitme
Şunun için özel animasyonlar geliştirmek için ilerleme API'leri:
tahmine dayalı geri hareketini etkinleştirin. Şu süre içinde:
OnBackPressedCallback
handleOnBackProgressed
, handleOnBackCancelled
ve
Kullanıcı geri kaydırırken nesnelere animasyon eklemek için handleOnBackStarted
yöntem. Tekliflerinizi otomatikleştirmek ve optimize etmek için
varsayılan animasyonlardan daha özel bir şeye ihtiyacınız varsa bu yöntemleri kullanabilirsiniz.
yeni sistem animasyonları veya Malzeme Bileşeni animasyonları tarafından sağlanan şemadır.
Çoğu uygulamanın, geriye dönük uyumlu AndroidX API'lerini kullanmasını bekliyoruz, ancak
içindeki benzer platform API'leri
OnBackAnimationCallback
arayüz, Android 14 Geliştirici Önizlemesi 1 ve sonraki sürümlerde test edilebilir.
AndroidX Transitions ile İlerleme API'lerini kullanma
Progress API'leri, AndroidX Transitions 1.5.0-alpha01 veya sonraki sürümlerle kullanılabilir kullanarak Tahmine Dayalı Geri Geçişleri oluşturabilirsiniz.
- Bunun yerine
TransitionManager#controlDelayedTransition
kullan Geçişleri şu şekilde oynatmak içinbeginDelayedTransition
: Kullanıcı geri kaydırır. - Geçişi
handleOnBackStarted
içinde oluşturun. - Geçişi,
handleOnBackProgressed
içinde önceki etkinliğiyle birlikte oynatın.currentFraction
ileBackEvent.progress
arasındaki ilişki, ne kadar uzak olduğunu Kullanıcı geri kaydırır. - Kullanıcı geri hareketini uyguladıktan sonra geçişi tamamlayın
handleOnBackPressed
- Son olarak,
handleOnBackCancelled
içindeki geçişin durumunu sıfırlayın.
Aşağıdaki video, Kotlin kodu ve XML'de özel bir geçiş gösterilmiştir
OnBackPressedCallback
ile uygulanan iki kutu arasında şunlar vardır:
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>
Tahmine dayalı geri geçişlerle çalışırken aşağıdakilere dikkat edin:
- Geçişin Tahmine Dayalı Geri'yi destekleyip desteklemediğini kontrol etmek için
isSeekingSupported
öğesini kullanın. - Özel geçişlerinizin doğru değerine döndürülmesi için
isSeekingSupported
değerini geçersiz kılın. - Animasyon başına bir denetleyici oluşturun.
- Tahmine dayalı geri geçişler, AndroidX geçişlerinde desteklenir. ancak çerçeve geçişlerinde geçerli değil. Çerçeveden başka bir sisteme geçiş yapmanızı öneririz oluşturabilirsiniz.
- Tahmine dayalı geri geçişler, Android 14 ve sonraki sürümleri çalıştıran cihazlarda desteklenir. uyumlu değildir.
- XML sahneleriyle oluşturulan geçişler de desteklenir. İçinde
handleOnBackStarted
,TransitionSeekController
metriğinizi bu sonuç için ayarlayın Şunun sonucu:TransitionManager.createSeekController
controlDelayedTransition
.
Android 14 ve sonraki sürümlerde özel etkinlik geçişleri ekleme
Özel etkinlik geçişlerinin Android 14'te tahmin özelliğini desteklediğinden emin olmak için
ve daha yüksek bir sayı için şunun yerine overrideActivityTransition
kullanabilirsiniz:
overridePendingTransition
. Bu, geçiş animasyonunun
Kullanıcı geri kaydırır.
Bunun nasıl olabileceğine dair bir örnek vermek için, B Etkinliği, arka yığındaki A Etkinliği'nin en üstündedir. Özel URL'ler, Etkinlik animasyonları aşağıdaki şekildedir:
- B Etkinliği'nin
onCreate
içinde açma veya kapatma geçişlerini çağırın yöntemidir. - Kullanıcı B Etkinliği'ne gittiğinde
OVERRIDE_TRANSITION_OPEN
işlevini kullanın. Zaman Kullanıcı A Etkinliği'ne dönmek için kaydırır,OVERRIDE_TRANSITION_CLOSE
OVERRIDE_TRANSITION_CLOSE
belirtilirkenenterAnim
, A Etkinliği'nin animasyonu girin veexitAnim
, B Etkinliği'nin çıkış animasyonudur.