我们如何为 navigateUp() 片段转换设置动画?
How can we animate a navigateUp() fragment transition?
在执行属于 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)
我们也可以像这样在 navigation.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() 方法设置动画呢?它不接受 NavOptions。我从右边滑动我的片段,但是当用户按下返回时,没有动画发生。我想做一个向右滑动的动画(与他们到达那里时看到的相反)。
如何设置动画:navigateUp()?它在内部调用 popBackStackInternal,这是一个复杂的操作。我没有看到任何与动画有关的逻辑。
除了 navigateUp() 之外,还有什么替代解决方案可以让您通过动画返回到原处?
您可以像这样使用 popEnterAnim
和 popExitAnim
属性:
<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>
或者,您可以在 NavOptions.Builder
上调用 setPopEnterAnim()
和 setPopExitAnim()
方法
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)
在执行属于 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)
我们也可以像这样在 navigation.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() 方法设置动画呢?它不接受 NavOptions。我从右边滑动我的片段,但是当用户按下返回时,没有动画发生。我想做一个向右滑动的动画(与他们到达那里时看到的相反)。
如何设置动画:navigateUp()?它在内部调用 popBackStackInternal,这是一个复杂的操作。我没有看到任何与动画有关的逻辑。
除了 navigateUp() 之外,还有什么替代解决方案可以让您通过动画返回到原处?
您可以像这样使用 popEnterAnim
和 popExitAnim
属性:
<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>
或者,您可以在 NavOptions.Builder
setPopEnterAnim()
和 setPopExitAnim()
方法
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)