当前位置: 移动技术网 > 科技>操作系统>windows > 安卓实战开发Day08 2020.8.20

安卓实战开发Day08 2020.8.20

2020年08月01日  | 移动技术网科技  | 我要评论
内容1.转场动画简介2.overridePendingTransition3.共享元素4.window一.转场动画简介转场动画(Transition)应用场景:两个activity之间切换时界面的过渡效果二.方式一:overridePendingTransition使用步骤①在anim目录下新建xml文件,里面编写类似如下的代码比如在left_in中<?xml version="1.0" encoding="utf-8"?><translate xmlns:and

内容

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网