डेस्टिनेशन के बीच ट्रांज़िशन ऐनिमेट करें

नेविगेशन कॉम्पोनेंट से आपको प्रॉपर्टी और व्यू ऐनिमेशन, दोनों को कार्रवाइयां. अपने ऐनिमेशन बनाने के लिए, यहां जाएं ऐनिमेशन के संसाधन.

आपके लिए नेविगेशन में कई डिफ़ॉल्ट ऐनिमेशन भी शामिल हैं. जोड़ने के लिए ऐनिमेशन का इस्तेमाल करके, ये काम करें:

  1. नेविगेशन एडिटर में, उस कार्रवाई पर क्लिक करें जहां ऐनिमेशन को होता है.
  2. एट्रिब्यूट पैनल के ऐनिमेशन सेक्शन में, ड्रॉपडाउन पर क्लिक करें तीर के निशान पर क्लिक करें. इनमें से कोई एक विकल्प चुना जा सकता है निम्न प्रकार:
    • गंतव्य दर्ज करना
    • गंतव्य से बाहर निकलना
    • गंतव्य के माध्यम से पॉप ऐक्शन, एक कार्रवाई यह नेविगेशन के दौरान, बैक स्टैक से अन्य डेस्टिनेशन को पॉप-अप करता है.
    • पॉप ऐक्शन के ज़रिए डेस्टिनेशन से बाहर निकलना
  3. प्रोजेक्ट ऐनिमेशन की सूची में से कोई ऐनिमेशन चुनें.
एट्रिब्यूट पैनल का ऐनिमेशन सेक्शन
पहली इमेज. ऐनिमेशन सेक्शन एट्रिब्यूट पैनल.

ऐनिमेशन जोड़ने के बाद, एक्सएमएल टेक्स्ट पर टॉगल करने के लिए टेक्स्ट टैब पर क्लिक करें व्यू. ऐनिमेशन के लिए एक्सएमएल अब संबंधित <action> एलिमेंट. यहां दिए गए उदाहरण में, specifyAmountFragment confirmationAction कार्रवाई के लिए सोर्स डेस्टिनेशन:

<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>

डेस्टिनेशन के बीच, शेयर किए गए एलिमेंट ट्रांज़िशन जोड़ना

जब कोई व्यू दो डेस्टिनेशन के बीच शेयर किया जाता है, तो आप शेयर किए गए एलिमेंट का ट्रांज़िशन, ताकि यह तय किया जा सके कि व्यू कब ट्रांज़िशन होता है एक मंज़िल से दूसरी मंज़िल पर जाने के लिए. शेयर किए गए एलिमेंट के ट्रांज़िशन ट्रांज़िशन फ़्रेमवर्क का हिस्सा हैं.

शेयर किए गए एलिमेंट की सप्लाई आपके नेविगेशन एक्सएमएल फ़ाइल. ऐक्टिविटी और फ़्रैगमेंट डेस्टिनेशन, हर एक में एक सब-क्लास होता है Navigator.Extras में से ऐसा इंटरफ़ेस जो नेविगेशन के लिए कई अन्य विकल्प स्वीकार करता है. इसमें शेयर किया गया इंटरफ़ेस भी शामिल है एलिमेंट. कॉल करते समय, इन Extras को पास किया जा सकता है navigate().

शेयर किए गए एलिमेंट का ट्रांज़िशन, फ़्रैगमेंट डेस्टिनेशन पर हो जाता है

FragmentNavigator.Extras क्लास की मदद से, शेयर किए गए एलिमेंट को एक डेस्टिनेशन से अगले डेस्टिनेशन पर मैप किया जा सकता है उनके ट्रांज़िशन नाम से, जैसा कि इस्तेमाल किया जा सकता है FragmentTransaction.addSharedElement(). इसके बाद, अतिरिक्त जानकारी को navigate() को पास किया जा सकता है, जैसा कि यहां दिखाया गया है उदाहरण:

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);

शेयर किए गए एलिमेंट का ऐक्टिविटी डेस्टिनेशन में बदल जाता है

गतिविधियां, शेयर किए गए एलिमेंट ट्रांज़िशन को कंट्रोल करने के लिए ActivityOptionsCompat पर निर्भर करती हैं. इसके बारे में, शेयर किए गए एलिमेंट से कोई गतिविधि शुरू करना दस्तावेज़ में बताया गया है. इसके बारे में, नीचे दिए गए उदाहरण में बताया गया है:

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);

गतिविधि के ट्रांज़िशन पर पॉप ऐनिमेशन लागू करना

Activity पर या उससे नेविगेट करने पर, पॉप ऐनिमेशन लागू नहीं होते स्वचालित रूप से. इसके बजाय, आपको कॉल करना होगा ActivityNavigator.applyPopAnimationsToPendingTransition() लक्ष्य Activity गंतव्य से, जहां ऐनिमेशन होना चाहिए:

Kotlin

override fun finish() {
    super.finish()
    ActivityNavigator.applyPopAnimationsToPendingTransition(this)
}

Java

@Override
public void finish() {
    super.finish();
    ActivityNavigator.applyPopAnimationsToPendingTransition(this);
}