最新的Navigation Architecture组件中动画标签之间有什么区别?我对
欢迎提供任何更好的视觉拓展。
enterAnim
和popEnterAnim
感到困惑。同样,exitAnim
和popExitAnim
也是如此。欢迎提供任何更好的视觉拓展。
enterAnim
和popEnterAnim
感到困惑。同样,exitAnim
和popExitAnim
也是如此。Pop与后退栈有关,我使用后退栈来帮助理解
例如:
A
现在正在屏幕上显示,我们将要把B
放到屏幕上,然后A
将从屏幕退出(动画/事务),B
将进入屏幕。
现在如果您点击返回键/向上按钮会发生什么?是的,相反的情况会发生,也就是B
将被A
所替换。
B
从后退栈中弹出并从屏幕中退出(Pop Exit)A
从后退栈中进入视图(Pop Enter)enterAnim
、exitAnim
、popEnterAnim
和popExitAnim
的理解与@ianhanniballake所接受的答案有些不同。<action>
的app:destination
属性定义的目标。当以“常规方式”导航到或从目标导航时,应用enterAnim
和exitAnim
,而当作为结果从后堆栈中弹出其上方的目标时,应用popEnterAnim
到该目标。同样地,当自身从后堆栈中弹出时,应用popExitAnim
到该目标。<navigation
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/example_graph"
app:startDestination="@id/destination_a">
<fragment
android:id="@+id/destination_a"
android:name="com.example.FragmentA">
<action
android:id="@+id/from_a_to_b"
app:destination="@id/destination_b"
app:enterAnim="@anim/slide_in_bottom"
app:exitAnim="@anim/scale_out_center"
app:popEnterAnim="@anim/scale_in_center"
app:popExitAnim="@anim/slide_out_bottom" />
</fragment>
<fragment
android:id="@+id/destination_b"
android:name="com.example.FragmentB">
<action
android:id="@+id/from_b_to_c"
app:destination="@id/destination_c" />
</fragment>
<fragment
android:id="@+id/destination_c"
android:name="com.example.FragmentC" />
</navigation>
当我们启动目标Activity时,我们将查看FragmentA。在这个例子中,我们将仅使用定义的<action>
和系统返回按钮从FragmentA导航到FragmentB-> FragmentC-> Back-> Back。
因此,从FragmentA导航到FragmentB将:
slide_in_bottom
动画(“enterAnim”)显示FragmentB进一步地,从FragmentB导航到FragmentC将:
scale_out_center
动画(“exitAnim”)删除FragmentB在返回的过程中,按下系统返回按钮将:
scale_in_center
动画(“popEnterAnim”)显示FragmentB再次按下系统返回按钮将:
slide_out_bottom
动画(“popExitAnim”)隐藏FragmentB