场景:
- A打开B页面,A页面保持不动,B页面从底部滑入显示
- B返回A页面,A页面保持不动, B页面从顶部向下滑出消失
问题:B页面滑入之前会出现短暂的黑屏
我的代码如下:
进入B页面的代码:
var intent = Intent(this,HomeAddActivity::class.java) startActivity(intent) overridePendingTransition(R.anim.bottom_in,0)
退出B页面的代码:
finish() overridePendingTransition(0, R.anim.bottom_out)
经过各种尝试,发现这样能解决问题:
动的那个页面的动画不能写空,也要定义一个动画给它,这样就不会出现黑的问题。
代码如下:
var intent = Intent(this,HomeAddActivity::class.java) intent.putExtra("data",homeCreateData as Serializable) startActivity(intent) overridePendingTransition(R.anim.bottom_in,R.anim.bottom_no)
finish() overridePendingTransition(R.anim.bottom_no, R.anim.bottom_out)
不动的动画:bottom_no.xml <!-- ** 一定要设置跟进入动画相同的时间,解决黑屏的关键 **--> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="300" android:fromYDelta="0" android:interpolator="@android:anim/decelerate_interpolator" android:toYDelta="0" /> </set>
进入的动画:bottom_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:duration="300" android:interpolator="@android:interpolator/accelerate_decelerate" tools:ignore="ResourceName"> <translate android:fromYDelta="100%p" android:toYDelta="0"/> </set>
退出的动画:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:duration="300" android:interpolator="@android:interpolator/linear" tools:ignore="ResourceName"> <translate android:fromYDelta="0" android:toYDelta="100%p"/> </set>