首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在条件导航中为片段动画制作动画

如何在条件导航中为片段动画制作动画
EN

Stack Overflow用户
提问于 2020-09-05 13:34:01
回答 1查看 203关注 0票数 1

要在导航组件中的目的地之间设置动画,可以在action标记中指定以下属性,如下所示。

代码语言:javascript
运行
复制
<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),它建议一些屏幕,例如登录屏幕,应该独立于导航流处理。

代码语言:javascript
运行
复制
<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上显式地定义转换。

代码语言:javascript
运行
复制
 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中指定它。

EN

Stack Overflow用户

回答已采纳

发布于 2020-09-05 22:48:49

如果您有一个操作需要可供多个目的地访问(正如您可能希望的那样),这正是在<navigation>图形级别定义的global actions操作的用例,而不是仅与单个目的地相关联。这意味着图中的任何目的地都可以通过navigate(R.id.navigate_to_profile_fragment)触发操作

代码语言:javascript
运行
复制
<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>
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63750764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档