Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 解決Activity啟動黑屏及設置android:windowIsTranslucent不兼容activity切換動畫問題

解決Activity啟動黑屏及設置android:windowIsTranslucent不兼容activity切換動畫問題

編輯:關於Android編程

 

之前在做 APP 的時候不太關注這個問題,因為自己在使用其他 APP 的時候也會在應用啟動的初始有一個黑屏閃過後才會出現應用的歡迎頁。直到最近開發過程中發現自己在歡迎頁啟動的線程由於請求和處理的數據量過大而,導致歡迎頁在出現之前界面上會有一個短暫的白色閃屏停留,當然白色閃屏的停留是因為 application 的主題樣式android:theme=@style/AppTheme 使用了 Theme.Light 題導致的,Light 樣式的 windowBackground、colorBackground、colorForeground 等屬性的值均為 light 也就是白色偏亮,所以才會出現白色閃屏。下面是我的 APP 出現白色閃屏時樣式引用的代碼:

  

簡單的修改後,閃屏顏色為黑色,代碼如下:

  

代碼修改後引用的樣式為黑色主題,但歡迎頁仍然會有黑色閃屏短暫的停留。繼續進行修改,設置透明屬性為 true,代碼如下:

經過這次的修改之後黑色閃屏現象消失了,最終達到了自己理想的效果。最後,經過查閱資料發現已經有人總結和處理過這類問題了,並且給出了優缺點的分析,我在這裡以我的理解對其進行引用。

原來避免黑色閃屏有2種方法,分別為:1.為 Theme 設置背景圖;2.為 Theme 設置透明屬性。顯然我采用的是第二種方式,先分別看看這2種方式所引用的代碼:

    
    

上面的2種 Theme 中,為 Theme 設置背景圖後程序在啟動的時候,會首先顯示這張圖,避免發生黑屏;為 Theme 設置透明屬性,程序啟動後不會黑屏而是透明,等到界面初始化完成後才一次性顯示出來。下面是兩種方式的優缺點:

  • 為 Theme 設置背景圖 給人程序啟動快的感覺,界面先顯示背景圖,然後再刷新其他界面控件,刷新不同步。
  • 為 Theme 設置透明屬性 給人程序啟動慢的感覺,界面會一次性刷出來,刷新同步。

    但是問題有出現了,原先在配置了activity的切換動畫效果,設置完android:windowIsTranslucent=true之後切換動畫失效了。暫時我也不知道android系統的theme屬性之間關系的錯綜復雜,繼承來繼承去的。。。為什麼會出現這種問題,不過還好無意間找到了解決辦法

     

    
    

    配置style繼承的parent為

     

     


    然後讓apptheme的
    android:windowAnimationStyle為上面的style

     

     


    如果想在所有的activity切換時候使用該theme,可以配置application,也可以單個單個配置在activity裡面。

     

    當然首頁退出的時候可以單獨配置MainActivity的退出動畫和進入動畫

     

     

    MainActivity的退出和進入動畫可以引用系統提供的,但是好像在style裡面配置引用不了有些系統的anim,

    在文件夾sdkplatformsandroid-20data es下面,activity_open_enter.xml,activity_close_exit.xml可以直接拷貝到項目中,修改

    單獨寫一個進入或者退出,然後其它默認。。。。。。。

     

    多動手,測試,如果有錯誤的地方麻煩留言一起交流,謝謝

    復制去Google翻譯翻譯結果 機器人:windowAnimationStyle
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved