Activity添加进入和退出动画的两种方式,解决黑色区域问题

Activity添加进入和退出动画的两种方式,解决黑色区域问题

给Activity添加进入和退出动画的操作,大家一定不会陌生。常见的有两种方式,一种是通过style文件给Activity设置Theme,另一种是直接代码中调用Activity#overridePendingTransition方法。

使用代码和使用style文件是一样的效果,下面举例进行说明,比如说我们的Activity进入动画需要从下往上滑动,退出需要从上往下滑动。

通过style文件给Activity设置Theme来实现

styles.xml中:


对应的anim文件:

res/anim/slide_in_down.xml:



    

res/anim/slide_out_down.xml:



    

res/anim/slide_in_up.xml



    

res/anim/slide_out_up.xml



    

接着将动画的style设置给目标Activity的style,然后将目标Activity的style设置给Activity的theme属性:



具体效果图如下:

image

通过Activity#overridePendingTransition方法

基于上面的anim文件,我们在启动目标Activity时,在startActivity后立即调用Activity#overridePendingTransition方法,代码如下:

btn_activity_anim.setOnClickListener {
    startActivity(Intent(this, ActivityAnimActivity::class.java))
    // 进入,从下往上动画
    overridePendingTransition(R.anim.slide_in_down, R.anim.slide_out_down)
}

在目标Activity关闭时,也调用Activity#overridePendingTransition方法,代码如下:

override fun finish() {
    super.finish()
    // 退出,从上往下动画
    overridePendingTransition(R.anim.slide_in_up, R.anim.slide_out_up)
}

具体效果如下:

image

细节优化——动画中的黑边去除

上面粗略的实现了动画效果,细心点的同学可以看到,在页面切换的过程中,可以明显的看见Activity的顶部有块黑色区域,如何去除呢?

这个还得从Activity的theme入手,具体如下:


项目地址

AndroidStudy

具体请看ActivityAnimActivity

参考:

Activity从屏幕底部滑出、滑入、处理黑色背景和状态栏

你可能感兴趣的:(Activity添加进入和退出动画的两种方式,解决黑色区域问题)