避免黑色閃屏有2種方法,分別爲:android
1.爲 Theme 設置背景圖;app
給人程序啓動快的感受,界面先顯示背景圖,而後再刷新其餘界面控件,刷新不一樣步。 ide
<style name="AppTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen"> <item name="android:windowBackground">@drawable/splash_bg</item> </style>
2.爲 Theme 設置透明屬性。動畫
給人程序啓動慢的感受,界面會一次性刷出來,刷新同步。spa
<style name="AppTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen"> <item name="android:windowIsTranslucent">true</item> </style>
上面的2種 Theme 中,爲 Theme 設置背景圖後程序在啓動的時候,會首先顯示這張圖,避免發生黑屏;爲 Theme 設置透明屬性,程序啓動後不會黑屏而是透明,等到界面初始化完成後才一次性顯示出來。下面是
這樣設置存在的問題:
原先在配置了activity的切換動畫效果,設置完android:windowIsTranslucent=true以後切換動畫失效了。
解決方案:code
<style name="AppTheme" parent="AppBaseTheme"> <!-- <item name="android:windowAnimationStyle">@style/Animation.Activity.Style</item> --> <item name="android:windowAnimationStyle">@style/Animation.Activity.Translucent.Style</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">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> <style name="Animation.Activity.Translucent.Style" parent="@android:style/Animation.Translucent"> <item name="android:windowEnterAnimation">@anim/base_slide_right_in</item> <item name="android:windowExitAnimation">@anim/base_slide_right_out</item> </style>
配置style繼承的parent爲:orm
<style name="Animation.Activity.Translucent.Style" parent="@android:style/Animation.Translucent"> <item name="android:windowEnterAnimation">@anim/base_slide_right_in</item> <item name="android:windowExitAnimation">@anim/base_slide_right_out</item> </style>
而後讓apptheme的
android:windowAnimationStyle爲上面的style xml
<style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowAnimationStyle">@style/Animation.Activity.Translucent.Style</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item> </style>
若是想在全部的activity切換時候使用該theme,能夠配置application,也能夠單個單個配置在activity裏面。
固然首頁退出的時候能夠單獨配置MainActivity的退出動畫和進入動畫繼承
<style name="Animation.Activity.Translucent.Style.Main" parent="@android:style/Animation.Translucent"> <item name="android:windowExitAnimation">@anim/slide_right_out</item> </style>
MainActivity的退出和進入動畫能夠引用系統提供的,可是好像在style裏面配置引用不了有些系統的anim,
在文件夾sdk\platforms\android-20\data\res下面,activity_open_enter.xml,activity_close_exit.xml能夠直接拷貝到項目中,稍作修改便可。單獨寫一個進入或者退出,而後其它默認。同步