安卓实战开发Day08 2020.8.20
程序员文章站
2022-06-24 19:31:42
内容1.转场动画简介2.overridePendingTransition3.共享元素4.window一.转场动画简介转场动画(Transition)应用场景:两个activity之间切换时界面的过渡效果二.方式一:overridePendingTransition使用步骤①在anim目录下新建xml文件,里面编写类似如下的代码比如在left_in中
内容
1.转场动画简介
2.overridePendingTransition
3.共享元素
4.window
一.转场动画简介
转场动画(Transition)应用场景:
两个activity之间切换时界面的过渡效果
二.方式一:overridePendingTransition
使用步骤
①在anim目录下新建xml文件,里面编写类似如下的代码
比如在left_in中
<?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>
②在Activity中设置点击事件
③重写overridePendingTransition方法
enter.setOnClickListener {
//进入另一界面
startActivity(Intent(this,SecondActivity::class.java))
//设置动画
overridePendingTransition(R.anim.right_in,R.anim.left_out)
}
④在另一界面中写back按钮的点击事件
back.setOnClickListener {
startActivity(Intent(this,MainActivity::class.java))
//设置动画
overridePendingTransition(R.anim.left_in,R.anim.right_out)
}
三.方式二:共享元素
使用步骤:
①在界面A和界面B中为共享控件设置相同的transitionName
android:transitionName="test"
②创建ActivityOptions对象
③启动界面
enter.setOnClickListener {
val options = ActivityOptions.makeSceneTransitionAnimation(this,imageView,"test")
startActivity(Intent(this,SecondActivity::class.java),options.toBundle())
}
注意:界面二如果有共享动画,最好使用finishAfterTransition()而不是finish()
如果想实现多个共享元素,则
val options = ActivityOptions.makeSceneTransitionAnimation(this,
Pair<View,String>(imageView,"fengjing")
Pair<View,String>(imageView2,"fengjing2")
)
四.window
还有一个 给整个屏幕设置动画,这种必须伴随着至少一个共享动画
//给整个屏幕设置动画 Explode Slide Fade
window.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)
window.enterTransition = Slide(Gravity.END).setDuration(1000)
setContentView(R.layout.activity_main)
enter.setOnClickListener {
val options = ActivityOptions.makeSceneTransitionAnimation(this,imageView,"test")
startActivity(Intent(this,SecondActivity::class.java),options.toBundle())
}
window设置的是除了共享元素之外的所有控件的动画
本文地址:https://blog.csdn.net/afdafvdaa/article/details/108118447