Gezinme bileşeni, işlemlere hem özellik eklemenizi hem de animasyonları görüntülemenizi sağlar. Kendi animasyonlarınızı oluşturmak için Animasyon kaynakları sayfasına göz atın.
Gezinme, başlamanız için çeşitli varsayılan animasyonlar da içerir. Bir işleme animasyon eklemek için aşağıdakileri yapın:
- Gezinme düzenleyicisinde, animasyonun gerçekleşmesi gereken işlemi tıklayın.
- Özellikler panelinin Animasyonlar bölümünde, eklemek istediğiniz animasyonun yanındaki açılır oku tıklayın. Aşağıdaki türler arasından seçim yapabilirsiniz:
- Hedef girme
- Bir hedeften çıkma
- Pop işlemi ile hedef girme. Bu işlem, gezinme sırasında ek hedefleri arka yığından çıkarır.
- Pop işlemini kullanarak bir hedeften çıkma
- Görüntülenen proje animasyonları listesinden bir animasyon seçin.
Animasyonları ekledikten sonra XML metin görünümüne geçmek için Metin sekmesini tıklayın. Animasyonların XML'i artık karşılık gelen <action>
öğesinde görünür. Aşağıdaki örnekte specifyAmountFragment
, confirmationAction
işlemi için kaynak hedeftir:
<fragment android:id="@+id/specifyAmountFragment" android:name="com.example.buybuddy.buybuddy.SpecifyAmountFragment" android:label="fragment_specify_amount" tools:layout="@layout/fragment_specify_amount"> <action android:id="@+id/confirmationAction" app:destination="@id/confirmationFragment" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" /> </fragment>
Hedefler arasında paylaşılan öğe geçişleri ekleme
Bir görünüm iki hedef arasında paylaşıldığında, bir hedeften diğerine geçerken görünümün nasıl geçiş yapacağını tanımlamak için paylaşılan öğe geçişini kullanabilirsiniz. Paylaşılan öğe geçişleri, Geçiş Çerçevesi'nin bir parçasıdır.
Paylaşılan öğeler, gezinme XML dosyanız yerine programlı olarak sağlanır. Etkinlik ve parça hedeflerinin her biri, Navigator.Extras
arayüzünün bir alt sınıfına sahiptir. Bu alt sınıf, paylaşılan öğeler dahil olmak üzere ek gezinme seçeneklerini kabul eder. navigate()
yöntemini çağırırken bu Extras
tutarını aktarabilirsiniz.
Paylaşılan öğe, parça hedefine geçiş yapıyor
FragmentNavigator.Extras
sınıfı, FragmentTransaction.addSharedElement()
kullanımına benzer şekilde, paylaşılan öğeleri bir hedeften diğerine taşımanıza olanak tanır.
Daha sonra, aşağıdaki örnekte gösterildiği gibi, ekstraları navigate()
öğesine iletebilirsiniz:
Kotlin
val extras = FragmentNavigatorExtras(view1 to "hero_image") view.findNavController().navigate( R.id.confirmationAction, null, // Bundle of args null, // NavOptions extras)
Java
FragmentNavigator.Extras extras = new FragmentNavigator.Extras.Builder() .addSharedElement(view1, "hero_image") .build(); Navigation.findNavController(view).navigate( R.id.details, null, // Bundle of args null, // NavOptions extras);
Paylaşılan öğe bir etkinlik hedefine geçiş yapıyor
Etkinlikler, Paylaşılan Öğe Geçişlerinin kontrolü için Paylaşılan öğe ile etkinlik başlatma dokümanlarında açıklandığı ve aşağıdaki örnekte gösterildiği üzere ActivityOptionsCompat
ürününe dayanır:
Kotlin
// Rename the Pair class from the Android framework to avoid a name clash import android.util.Pair as UtilPair ... val options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, UtilPair.create(view1, "hero_image")) val extras = ActivityNavigatorExtras(options) view.findNavController().navigate( R.id.details, null, // Bundle of args null, // NavOptions extras)
Java
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(view1, "hero_image")); ActivityNavigatorExtras extras = new ActivityNavigatorExtras.Builder() .setActivityOptions(options) .build(); Navigation.findNavController(view).navigate( R.id.details, null, // Bundle of args null, // NavOptions extras);
Etkinlik geçişlerine pop animasyonlar uygulama
Bir Activity
öğesine gittiğinizde veya bu konumdan gittiğinizde pop animasyonlar otomatik olarak
uygulanmaz. Bunun yerine, animasyonun gerçekleşmesi gereken hedef Activity
hedefinden ActivityNavigator.applyPopAnimationsToPendingTransition()
yöntemini çağırmanız gerekir:
Kotlin
override fun finish() { super.finish() ActivityNavigator.applyPopAnimationsToPendingTransition(this) }
Java
@Override public void finish() { super.finish(); ActivityNavigator.applyPopAnimationsToPendingTransition(this); }