1、转场动画的主要运用场景:
- 在两个activity之间切换时界面的过渡效果。
- 两个activity或者Fragment之间shared elements切换效果。
2、转场动画的两种常用方式:
- overridePendingTransition
- ActivityOptions
3、overridePendingTransition:
平移动画:
创建一个xml文件(translat.xml):
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration = "500"
>
</translate>
创建一个xml文件(translat2.xml):
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration = "500"
>
</translate>
// 在mainActivity中实现跳转动画:
ykButton.setOnClickListener(){
Intent().also {
it.setClass(this,Main2Activity::class.java)
// 添加动画
overridePendingTransition(R.anim.translate,R.anim.translate2)
startActivity(it)
}
}
// 实现返回动画:
ykButton2.setOnClickListener(){
overridePendingTransition(R.anim.translate2,R.anim.translate)
finish()
}
4、ActivityOptions(共享动画,相对上一个使用较多):
button2.setOnClickListener(){
// 1、为要进行切换的两个界面设置共享元素,并设置相同的transitionName
// 2、创建ActivityOptions对象
// 单元素
// val options = ActivityOptions.makeSceneTransitionAnimation(this,imageView3,"yk1")
// 多元素
val options = ActivityOptions.makeSceneTransitionAnimation(this, Pair<View,String>(imageView3,"yk1"), Pair<View,String>(imageView4,"yk2")
)
// 裁剪(还有很多动画效果)
// val options2 = ActivityOptions.makeClipRevealAnimation(imageView3,0,0,imageView3.width,imageView3.height)
Intent().also {
it.setClass(this,activityOptions2::class.java)
startActivity(it,options.toBundle())
}
}
// 添加返回动画:
button3.setOnClickListener(){
finishAfterTransition()
}
5、overridePendingTransition和ActivityOptions实现效果:

网友评论