Activity切換時,可能出現的白色閃屏解決方案
阿新 • • 發佈:2019-02-11
今天在app上發現activity在切換的時候,背景的圖片頂部出現了白色的閃爍,起初還認為是actionbar的設定的背景圖片引起的,後來網上搜索了一番,發現不少人也遇到了問題。最後定位就是activity設定的theme引起的,在activity中我設定的是light:
而Light 樣式的 windowBackground、colorBackground、colorForeground 等屬性的值均為 light 也就是白色偏亮,所以才會出現白色閃屏。<!-- 相當於holo.light樣式 --> <style name="Theme.Mike.Light" parent="@style/Theme.AppCompat.Light"> <item name="android:windowContentOverlay">@null</item> <item name="popupMenuStyle">@style/Widget.Mike.Light.PopupMenu</item> <item name="textAppearanceLargePopupMenu">@style/TextAppearance.Mike.Light.Widget.PopupMenu.Large</item> </style>
1、進行簡單修改後:
<!-- 相當於holo.light樣式 --> <style name="Theme.Mike.Light" parent="@style/Theme.AppCompat.Light"> <item name="android:windowBackground">@color/transparent</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowContentOverlay">@null</item> <item name="popupMenuStyle">@style/Widget.Mike.Light.PopupMenu</item> <item name="textAppearanceLargePopupMenu">@style/TextAppearance.Mike.Light.Widget.PopupMenu.Large</item> </style>
將背景windowBackground和windowIsTranslucent設定transparent和true之後,發現白色的閃屏消失,似乎解決了問題,但是在有軟鍵盤彈出的頁面,由於兩個屬性都設定了透明,就導致了軟鍵盤在收回去的一瞬間時候,出現了上個activity的背景圖
2、再次修改:
去掉windowisTranslucent之後,雖然沒有閃屏出現,也沒有出現上個activity的背景,但是鍵盤在彈出來的時候,鍵盤的window會有黑色的背景閃爍<!-- 相當於holo.light樣式 --> <style name="Theme.Mike.Light" parent="@style/Theme.AppCompat.Light"> <item name="android:windowBackground">@color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="popupMenuStyle">@style/Widget.Mike.Light.PopupMenu</item> <item name="textAppearanceLargePopupMenu">@style/TextAppearance.Mike.Light.Widget.PopupMenu.Large</item> </style>
3、最後就用了另外一個樣式(或者將android:windowBackgroud的背景設定黑色,和下面的效果基本一樣)
<style name="Theme.Mike" parent="@style/Theme.AppCompat">
<item name="android:windowContentOverlay">@null</item>
</style>
這樣雖然看似可以,但是如果activity的背景是白色的,再切換的時候應該就會出現黑色的閃屏
也可以用background設定一個背景圖,來解決,但是對我不是最好的解決方法