如何使用导航组件向变化的片段添加动画?
How to add animation to changing fragments using Navigation Component?
如何使用导航架构组件为变化的片段添加动画?
在导航组件文档 (https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing) 中的 Create a transition between destinations(接近文档末尾)部分,您已在细节。
您可以使用编辑器添加它们,方法是选择所需过渡的箭头,然后在 Attributes[=] 的 Animations 部分中选择动画24=] 选项卡。
或者通过引用 xml 文件中的动画,如示例所示:
<fragment
android:id="@+id/specifyAmountFragment"
android:name="com.example.buybuddy.buybuddy.SpecifyAmountFragment"
android:label="fragment_specify_amount"
tools:layout="@layout/fragment_specify_amount">
<action
android:id="@+id/confirmationAction"
app:destination="@id/confirmationFragment"
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>
您可以为此动画使用常规动画资源
如果您想以编程方式添加动画,请使用 NavOptions (here).
NavOptions.Builder navBuilder = new NavOptions.Builder();
navBuilder.setEnterAnim(R.anim.slide_left).setExitAnim(R.anim.slide_right).setPopEnterAnim(R.anim.slide_left).setPopExitAnim(R.anim.slide_right);
//Inside Activity
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
navController.navigate(R.id.destinationFragmentId,null,navBuilder.build());
//Inside Fragment
NavHostFragment.findNavController(YoutFragment.this)
.navigate(R.id.destinationFragmentId, null, navBuilder.build());
如何使用导航架构组件为变化的片段添加动画?
在导航组件文档 (https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing) 中的 Create a transition between destinations(接近文档末尾)部分,您已在细节。
您可以使用编辑器添加它们,方法是选择所需过渡的箭头,然后在 Attributes[=] 的 Animations 部分中选择动画24=] 选项卡。
或者通过引用 xml 文件中的动画,如示例所示:
<fragment
android:id="@+id/specifyAmountFragment"
android:name="com.example.buybuddy.buybuddy.SpecifyAmountFragment"
android:label="fragment_specify_amount"
tools:layout="@layout/fragment_specify_amount">
<action
android:id="@+id/confirmationAction"
app:destination="@id/confirmationFragment"
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>
您可以为此动画使用常规动画资源
如果您想以编程方式添加动画,请使用 NavOptions (here).
NavOptions.Builder navBuilder = new NavOptions.Builder();
navBuilder.setEnterAnim(R.anim.slide_left).setExitAnim(R.anim.slide_right).setPopEnterAnim(R.anim.slide_left).setPopExitAnim(R.anim.slide_right);
//Inside Activity
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
navController.navigate(R.id.destinationFragmentId,null,navBuilder.build());
//Inside Fragment
NavHostFragment.findNavController(YoutFragment.this)
.navigate(R.id.destinationFragmentId, null, navBuilder.build());