要在导航组件中的目的地之间设置动画,可以在action标记中指定以下属性,如下所示。
<fragment
.........>
<action
........
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>我读到了条件导航(https://developer.android.com/guide/navigation/navigation-conditional),它建议一些屏幕,例如登录屏幕,应该独立于导航流处理。

<navigation
.........
app:startDestination="@id/main_fragment">
<fragment
android:id="@+id/main_fragment"
android:name="com.google.android.conditionalnav.MainFragment"
android:label="fragment_main"
tools:layout="@layout/fragment_main">
<action
android:id="@+id/navigate_to_profile_fragment"
app:destination="@id/profile_fragment"/>
</fragment>
<fragment
android:id="@+id/login_fragment"
android:name="com.google.android.conditionalnav.LoginFragment"
android:label="login_fragment"
tools:layout="@layout/login_fragment"/>
<fragment
android:id="@+id/profile_fragment"
android:name="com.google.android.conditionalnav.ProfileFragment"
android:label="fragment_profile"
tools:layout="@layout/fragment_profile"/>
</navigation>当用户尚未使用动画进行身份验证时,我希望从ProfileFragment重定向到LoginFragment。我知道当进入或退出片段时,我们可以在LoginFragment上显式地定义转换。
class LoginFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val inflater = TransitionInflater.from(requireContext())
enterTransition = inflater.inflateTransition(R.transition.slide_right)
exitTransition = inflater.inflateTransition(R.transition.fade)
}
}
class ProfileFragment : Fragment() {
.......
navController.navigate(R.id.login_fragment)
.......
}我想知道是否有其他方法可以使用导航组件或动画属性从ProfileFragment动画到LoginFragment动画,就像我们在操作标签上所做的那样,而不是在LoginFragment中指定它。
发布于 2020-09-05 22:48:49
如果您有一个操作需要可供多个目的地访问(正如您可能希望的那样),这正是在<navigation>图形级别定义的global actions操作的用例,而不是仅与单个目的地相关联。这意味着图中的任何目的地都可以通过navigate(R.id.navigate_to_profile_fragment)触发操作
<navigation
.........
app:startDestination="@id/main_fragment">
<action
android:id="@+id/navigate_to_profile_fragment"
app:destination="@id/profile_fragment"
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
android:id="@+id/main_fragment"
android:name="com.google.android.conditionalnav.MainFragment"
android:label="fragment_main"
tools:layout="@layout/fragment_main">
</fragment>
<fragment
android:id="@+id/login_fragment"
android:name="com.google.android.conditionalnav.LoginFragment"
android:label="login_fragment"
tools:layout="@layout/login_fragment"/>
<fragment
android:id="@+id/profile_fragment"
android:name="com.google.android.conditionalnav.ProfileFragment"
android:label="fragment_profile"
tools:layout="@layout/fragment_profile"/>
</navigation>https://stackoverflow.com/questions/63750764
复制相似问题