我们如何为 navigateUp() 片段过渡制作动画?



当执行属于androidx.navigation系统的片段事务时,我们可以像这样以编程方式指定NavOptions:

val navOptions = NavOptions.Builder()
.setEnterAnim(R.anim.slide_in_right)
.build()
findNavController(R.id.nav_host_fragment).navigate(R.id.settingsFragment, null, navOptions)

我们还可以在导航中指定它们.xml如下所示:

<fragment
android:id="@+id/settingsFragment"
android:name="com.test.android.fragments.SettingsFragment"
android:label="SettingsFragment">
<action
android:id="@+id/action_settings_to_profile"
app:destination="@id/userProfileSettingsFragment"
app:enterAnim="@anim/slide_in_right" />
</fragment>

但是我们如何为 navigateUp(( 方法设置动画呢? 它不接受导航选项。 我从右边滑动我的片段,但是当用户按"返回"时,没有动画发生。 我想做一个向右滑动的动画(与他们到达那里时看到的动画相反(。

如何制作动画:导航Up(( ? 它在内部调用popBackStackInternal,这是一个复杂的操作。 我看不出那里有任何与动画有关的逻辑。

除了 navigateUp(( 之外,还有什么其他解决方案可以回到你来自动画的地方吗?

您可以使用popEnterAnimpopExitAnim属性,如下所示:

<fragment
android:id="@+id/settingsFragment"
android:name="com.storefaces.android.fragments.SettingsFragment"
android:label="SettingsFragment">
<action
android:id="@+id/action_settings_to_profile"
app:destination="@id/userProfileSettingsFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_right"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_left" />
</fragment>

或者,可以调用setPopEnterAnim()方法,并对setPopExitAnim()方法NavOptions.Builder

val navOptions = NavOptions.Builder()
.setEnterAnim(R.anim.slide_in_right)
.setExitAnim(R.anim.slide_out_right)
.setPopEnterAnim(R.anim.slide_in_left)
.setPopExitAnim(R.anim.slide_out_left)
.build()
findNavController(R.id.nav_host_fragment).navigate(R.id.settingsFragment, null, navOptions)

相关内容

  • 没有找到相关文章