一耗美、App啟動優(yōu)化
問題如下:
1枯夜、App啟動白屏堵漱、或者黑屏
2扎筒、App啟動時間長
二莱找、解決方法1
通常的解決辦法都是給Activity設(shè)置一個透明背景的主題
<style name="SplashTheme" parent="AppTheme">
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
結(jié)果如下:
優(yōu)點:確實沒有白屏和黑屏了
缺點:1、給SplashActivity設(shè)置后嗜桌,用戶點擊我們APP圖標(biāo)后宋距,需要等待2秒左右的時候才會顯示contentView。造成了APP啟動速度慢的假象症脂,其實Activity已經(jīng)啟動了谚赎,只是background是透明的,這時候你點擊桌面的其他地方是無效的诱篷。這樣就和Google的初衷背道而馳了
2壶唤、給其他Activity設(shè)置后,會導(dǎo)致通過overridePendingTransition設(shè)置的啟動關(guān)閉Activity的動畫無效棕所。需要在style中重新寫如下幾個動畫:
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowAnimationStyle">@style/Animation.Activity.Translucent.Style</item>
<item name="android:windowFullscreen">true...
<item name="android:windowIsTranslucent">true...
</style>
<style name="Animation.Activity.Style" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">...
<item name="android:activityOpenExitAnimation">...
<item name="android:activityCloseEnterAnimation">...
<item name="android:activityCloseExitAnimation">...
</style>
<style name="Animation.Activity.Translucent.Style" parent="@android:style/Animation.Translucent">
<item name="android:windowEnterAnimation">...
<item name="android:windowExitAnimation">...
</style>
3闸盔、Activity之間的跳轉(zhuǎn)可能偶爾會看到桌面一閃而過(如果SplashActivity和其他Activity都設(shè)置了透明)
三、解決方式2
給主題設(shè)置Window背景圖片
<style name="SplashTheme" parent="AppBaseTheme">
<!-- 歡迎頁背景引用剛才寫好的 -->
<item name="android:windowBackground">@drawable/splash</item>
<item name="android:windowFullscreen">true</item>
<!-- <item name="android:windowIsTranslucent">true</item> --> <!-- 透明背景不要了 -->
</style>
結(jié)果如下:
優(yōu)點:確實解決了白屏琳省、黑屏問題
缺點:華為手機HUAWEI MT7-TL00出現(xiàn)bug-圖片先顯示了一次模糊的迎吵、帶黑圈的圓角圖片,再顯示了一次全屏清晰圖片
四针贬、解決方式3
給主題設(shè)置Window背景圖片
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 背景顏色 -->
<item android:drawable="@color/white" />
<item>
<!-- 圖片 -->
<bitmap
android:gravity="center"
android:src="@drawable/wel_page" />
</item>
</layer-list>
<style name="SplashTheme" parent="AppBaseTheme">
<!-- 歡迎頁背景引用剛才寫好的 -->
<item name="android:windowBackground">@drawable/splash</item>
<item name="android:windowFullscreen">true</item>
<!-- <item name="android:windowIsTranslucent">true</item> --> <!-- 透明背景不要了 -->
</style>
優(yōu)點:確實解決了白屏击费、黑屏問題
缺點:華為手機HUAWEI MT7-TL00出現(xiàn)bug-圖片確實只顯示了一次圖片,但是圖片確實被截取后的圖片桦他,并沒有顯示全圖
五蔫巩、最終解決方式
在方法4的基礎(chǔ)上修改
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<item>
<bitmap
android:gravity="fill"
android:src="@drawable/bg_splash" />
</item>
</layer-list>
<style name="SplashTheme" parent="AppBaseTheme">
<!-- 歡迎頁背景引用剛才寫好的 -->
<item name="android:windowBackground">@drawable/splash</item>
<item name="android:windowFullscreen">true</item>
<!-- <item name="android:windowIsTranslucent">true</item> --> <!-- 透明背景不要了 -->
</style>
參考:
https://blog.csdn.net/yanzhenjie1003/article/details/52201896:嚴(yán)振杰