在A,B两个Activity中转场时,我们以B为主Activity,也是说Style是指定在B中的,可以如下指定,B的Style文件中指定动画Style:
<!-- B Activity的Style -->
<style name="AppTheme.Launcher" parent="xxx.xxx">
<!--指定 B Activity的转场动画 -->
<item name="android:windowAnimationStyle">@style/AppTheme.CustomActivityAnim</item>
</style>
<!--指定的转场动画 -->
<style name="AppTheme.CustomActivityAnim" parent="@android:style/Animation.Activity" mce_bogus="1">
<!-- 上一个Activity(A)退出的动画 -->
<item name="android:activityOpenExitAnimation">@anim/activity_open_exit_animation</item>
<!-- 本Activity(B)进入的动画 -->
<item name="android:activityOpenEnterAnimation">@anim/activity_open_enter_animation</item>
<!-- 本Activity(B)退出动画 -->
<item name="android:activityCloseExitAnimation">@anim/activity_close_exit_animation</item>
<!-- 下一个Activity(A)进入动画 -->
<item name="android:activityCloseEnterAnimation">@anim/activity_close_enter_animation</item>
</style>
四个动画指定的分别是两个场景:
-
A打开B
android:activityOpenExitAnimation指定A的退出动画
android:activityOpenEnterAnimation指定B的进入动画 -
B回退到A
android:activityCloseExitAnimation指定B的退出动画
android:activityCloseEnterAnimation指定A的进入动画
对于动画文件,和普通的动画文件一样,如:
activity_open_exit_animation:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0" android:toYDelta="100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
activity_open_enter_animation:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%p" android:toYDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
activity_open_enter_animation:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0" android:toYDelta="-100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
activity_close_enter_animation
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p" android:toYDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
网友评论