- 为了避免动画切换时有黑屏效果,采取两种方法
第一种,采用全局主题,所有界面公用这个动画效果
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/bg_color</item>
<item name="colorPrimaryDark">@color/bg_color</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowAnimationStyle">@style/AppSlide</item>
</style>
<style name="AppSlide" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slide_top_in</item>
<item name="android:activityOpenExitAnimation">@anim/out_activity</item>
<item name="android:activityCloseEnterAnimation">@anim/in_activity_close</item>
<item name="android:activityCloseExitAnimation">@anim/slide_top_bottom</item>
</style>
全局使用这个主题
第二种,对于局部使用转场动画的界面,使用如下
- 在onCreate()方法中
overridePendingTransition(R.anim.slide_top_in, R.anim.out_activity)
- 在onFinish()方法中
overridePendingTransition(R.anim.out_activity, R.anim.slide_top_bottom)
- 动画xml文件
in_activity_close
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_longAnimTime"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYDelta="0%"
android:toYDelta="0%" />
</set>
out_activity
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_longAnimTime"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYDelta="0%"
android:toYDelta="0%"
/>
</set>
slide_top_bottom
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0.0"
android:toYDelta="100%p" />
</set>
slide_top_in
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="100%p"
android:toYDelta="0" />
</set>