欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

安卓实战开发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