【已解決】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>