Ekranlar arasında geçiş animasyonu için ne yapılmalı?
sobes.tech yapay zeka
AI'dan gelen yanıt
Android'de ekranlar arasında geçiş animasyonu yapmak için birkaç yaklaşım kullanılabilir:
-
Aktivite Animasyonları (Activity Animations): Temalar içinde veya programatik olarak tanımlanır. Aktivitenin giriş ve çıkış animasyonlarını belirlemeye olanak tanır.
override fun startActivity(intent: Intent) { super.startActivity(intent) overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left) } override fun finish() { super.finish() overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right) }Animasyon dosyaları (örneğin,
res/anim/slide_in_right.xml):<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="@android:integer/config_shortAnimTime" /> </set> -
Fragment Animasyonları (Fragment Animations): Bir fragment işlemi sırasında tanımlanır.
supportFragmentManager.beginTransaction() .setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out) .replace(R.id.container, fragment) .commit() -
Paylaşılan Öğeler Geçişleri (Shared Element Transitions): Bir veya birkaç View'un ekranlar arasında geçişini animasyonla göstermek için kullanılır, sürekli bir efekt oluşturur. Tema içinde transition desteği etkinleştirilmelidir.
Kaynak aktivitede:
val options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, sharedView, // Animasyon yapılacak View ViewCompat.getTransitionName(sharedView) // Bağlantı için isim ) startActivity(intent, options.toBundle())Hedef aktivitede:
// onCreate veya onViewCreated metodunda (fragmentler için) supportPostponeEnterTransition() // Giriş animasyonunu ertele, Views hazır olana kadar // Daha sonra, Views hazırsa (örneğin, resim yükleme dinleyicisinde): supportStartPostponedEnterTransition()Her iki ekranın XML düzeninde:
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:transitionName="image_transition" /> <!-- Bağlantı için isim --> -
Bileşen Animasyonları (Navigation Component): Eğer Navigation Component kullanılıyorsa, geçiş animasyonları doğrudan navigasyon grafiğinde tanımlanabilir:
<action android:id="@+id/action_fragmentA_to_fragmentB" app:destination="@id/fragmentB" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" />
Yöntem seçimi, kullanılan mimariye (Activity, Fragments, Navigation Component) ve istenen etkiye bağlıdır.