1. 程式人生 > >【已解決】APP啟動時,總是出現一個空白頁

【已解決】APP啟動時,總是出現一個空白頁

APP啟動時,總是出現一個空白頁,簡單說:閃屏。

導致原因(AndroidManifest檔案):

<application         android:allowBackup="true"         android:icon="@mipmap/logo"         android:label="@string/app_name"         android:supportsRtl="true"         android:theme="@style/AppTheme">

application中AppTheme用的是(偏亮樣式:Light):

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">         <!-- Customize your theme here. -->         <item name="colorPrimary">@color/colorPrimary</item>         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>         <item name="colorAccent">@color/colorAccent</item>     </style>

解決: 在AndroidManifest中,給你的啟動頁新增一個新的style,以避免它預設載入application的style,出現閃屏

結果如圖:

具體方法一:

android:windowIsTranslucent屬性設定為true,背景透明屬性

<style name="styleSplashImage" parent="Theme.AppCompat.Light.NoActionBar">         <item name="android:windowIsTranslucent">true</item>         <item name="android:windowNoTitle">true</item>     </style>

具體方法二: android:windowBackground屬性設定背景圖(啟動頁的圖片)

<style name="styleSplashImage" parent="Theme.AppCompat.Light.NoActionBar">         <item name="android:windowBackground">@drawable/splash_bg</item>         <item name="android:windowNoTitle">true</item>     </style>

解決閃屏問題。 -----------------------------------------------------------------------------------------------------------------

然而發現android:windowIsTranslucent屬性設定為true之後,跳轉頁面的動畫效果失效了。

解決方法(需要你自己的動畫屬性檔案):

<style name="styleSplashImage" parent="Theme.AppCompat.Light.NoActionBar">         <item name="android:windowAnimationStyle">@style/Animation.Activity.Style</item>         <item name="android:windowIsTranslucent">true</item>         <item name="android:windowNoTitle">true</item>     </style>       <style name="Animation.Activity.Style" parent="@android:style/Animation.Activity">         <item name="android:activityOpenEnterAnimation">@anim/base_slide_right_in</item>         <item name="android:activityOpenExitAnimation">@anim/base_stay_orig</item>         <item name="android:activityCloseEnterAnimation">@anim/base_stay_orig</item>         <item name="android:activityCloseExitAnimation">@anim/base_slide_right_out</item>         <item name="android:taskOpenEnterAnimation">@anim/base_slide_right_in</item>         <item name="android:taskOpenExitAnimation">@anim/base_stay_orig</item>         <item name="android:taskCloseEnterAnimation">@anim/base_stay_orig</item>         <item name="android:taskCloseExitAnimation">@anim/base_slide_right_out</item>         <item name="android:taskToFrontEnterAnimation">@anim/base_slide_right_in</item>         <item name="android:taskToFrontExitAnimation">@anim/base_stay_orig</item>         <item name="android:taskToBackEnterAnimation">@anim/base_stay_orig</item>         <item name="android:taskToBackExitAnimation">@anim/base_slide_right_out</item>

</style>