1. 程式人生 > >解決windowIsTranslucent與windowAnimationStyle的衝突

解決windowIsTranslucent與windowAnimationStyle的衝突

當設定主題windowIsTranslucent=true時,會導致windowAnimationStyle設定的Activity切換動畫失效。網上比較普遍的解決辦法是繼承Animation.Translucent,但這種辦法始終無法同時實現OpenEnter、OpenExit、CloseEnter、CloseExit這四種效果。這裡我提供一種簡單的解決辦法:

把AppTheme應用在AndroidManifest.xml中的每個activity裡面,問題解決。

AndroidManifest檔案

<activity
    android:name="com.lwl.demo.activity.FirstActivity"
    android:theme="@style/AppTheme" />
<activity
    android:name="com.lwl.demo.activity.SecondActivity"
    android:theme="@style/AppTheme" />
<activity
    android:name="com.lwl.demo.activity.ThirdActivity"
    android:theme="@style/AppTheme" />

styles檔案

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@style/anim_activity_base</item>
</style>

<style name="anim_activity_base" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_in_left</item>
    <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
    <item name="android:activityCloseEnterAnimation">@anim/slide_in_right</item>
    <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>