第一步 关联navigation 视图
①创建Fragment页面;
②在res/navigation/navigations.xml可视化连接关系视图。
第二步 定制动画
在res/anim文件中定义动画文件
右进右出 slide_in_right.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%"
android:toXDelta="0%"
android:duration="400"
android:fromYDelta="0%"
android:toYDelta="0%"/>
</set>
右进右出 动画 slide_out_right.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0%"
android:toXDelta="100%"
android:duration="400"
android:fromYDelta="0%"
android:toYDelta="0%"/>
</set>
第三步 调用动画
//绑定FramentPageBinding视图
private lateinit var bindding:FramentPageBinding
//在onCreateView生命周期内,将xml布局转换为FragmentBinding 对象 binding=DataBindingUtil.inflate(inflater,R.layout.fragment_title,container,false)
//点击监听事件
binding.布局id名.setOnClickListener{view:View ->
// 在适当的地方调用以下代码
val navOptions = NavOptions.Builder()
.setEnterAnim(R.anim.slide_in_right) // 进入动画
.setExitAnim(R.anim.slide_out_right) // 退出动画
.setPopEnterAnim(R.anim.slide_out_right) // 返回时进入动画
.setPopExitAnim(R.anim.slide_out_right) // 返回时退出动画
.build()
//action_titleFragment3_to_adeviceFragment navigation关联中将从titleFragment3页面跳转到adeviceFragment页面
Navigation.findNavController(view).navigate(R.id.action_titleFragment3_to_adeviceFragment,null,navOptions)
}