編輯:關於Android編程
在做搜芽的過程中,發現那個外包人緣做的不行,因為啟動的時候會停頓,然後白屏一會,聯想到幾個月前我在我的三僚企業通信軟件裡面拉起9K-Mail的時候也會黑屏,所以決定學習一下。解決一下。這不,萬能的網絡還是非常有用的。
歡迎頁啟動的線程由於請求和處理的數據量過大而,導致歡迎頁在出現之前界面上會有一個短暫的白色閃屏停留,當然白色閃屏的停留是因為 application 的主題樣式android:theme=@style/AppTheme 使用了 Theme.Light 題導致的,Light 樣式的 windowBackground、colorBackground、colorForeground 等屬性的值均為 light 也就是白色偏亮,所以才會出現白色閃屏。下面是我的 APP 出現白色閃屏時樣式引用的代碼:
? 1
簡單的修改後,閃屏顏色為黑色,代碼如下:
? 1
代碼修改後引用的樣式為黑色主題,但歡迎頁仍然會有黑色閃屏短暫的停留。繼續進行修改,設置透明屬性為 true,代碼如下:
? 1
經過這次的修改之後黑色閃屏現象消失了,最終達到了自己理想的效果。最後,經過查閱資料發現已經有人總結和處理過這類問題了,並且給出了優缺點的分析,我在這裡以我的理解對其進行引用。
原來避免黑色閃屏有2種方法,分別為:1.為 Theme 設置背景圖;2.為 Theme 設置透明屬性。顯然我采用的是第二種方式,先分別看看這2種方式所引用的代碼:
? 1
?
1
上面的2種 Theme 中,為 Theme 設置背景圖後程序在啟動的時候,會首先顯示這張圖,避免發生黑屏;為 Theme 設置透明屬性,程序啟動後不會黑屏而是透明,等到界面初始化完成後才一次性顯示出來。下面是兩種方式的優缺點:
但是問題有出現了,原先在配置了activity的切換動畫效果,設置完android:windowIsTranslucent=true之後切換動畫失效了。暫時我也不知道android系統的theme屬性之間關系的錯綜復雜,繼承來繼承去的。。。為什麼會出現這種問題,不過還好無意間找到了解決辦法
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
? 1 2
android:windowAnimationStyle為上面的style
? 1 2 3
當然首頁退出的時候可以單獨配置MainActivity的退出動畫和進入動畫
? 1
MainActivity的退出和進入動畫可以引用系統提供的,但是好像在style裡面配置引用不了有些系統的anim,
在文件夾sdkplatformsandroid-20data es下面,activity_open_enter.xml,activity_close_exit.xml可以直接拷貝到項目中,修改
單獨寫一個進入或者退出,然後其它默認。。。。。。。
多動手,測試,如果有錯誤的地方麻煩留言一起交流,謝謝
另一篇值得看的文章:(http://blog.csdn.net/u012970411/article/details/16981441)前幾天Boss就反應說,機器每次啟動程序都會閃一下黑屏,這個客戶不接受。沒辦法,只能想想怎麼解決,最後找到了下面的方法。閃黑屏的原因主要是我們啟動Activity的時候,需要跑完onCreate和onResume才會顯示界面。也就是說需要處理一些數據後,才會顯示。按照這種思路,是不是我把初始化的工作盡量減少就可以避免黑屏?事實是,就算你onCreate啥都不做,仍然會閃一下黑屏,因為初始化解析界面時需要一定時間。下面是解決辦法:
(PS:新建的QQ群,有興趣可以加入一起討論:Android群:322599434)
1、自定義Theme
//Edited by mythou //http://www.cnblogs.com/mythou/
//1、設置背景圖Theme //2、設置透明Theme
上面我定義了兩種Theme,第一種Theme就是設置一張背景圖。當程序啟動時,首先顯示這張背景圖,避免出現黑屏。第二種Theme是把樣式設置為透明,程序啟動後不會黑屏而是整個透明了,等到界面初始化完才一次性顯示出來。下面說說兩種方式的優缺點:
2、修改AndroidManifest.xml
為了使上面Theme生效,我們需要設置一些Activity的Theme
//Edited by mythou //http://www.cnblogs.com/mythou/
android:theme=@style/Theme.AppStartLoad android:label=@string/app_name >//......
3、Theme屬性詳解
//Edited by mythou //http://www.cnblogs.com/mythou/
android:theme=@android:style/Theme.Dialog //Activity顯示為對話框模式 android:theme=@android:style/Theme.NoTitleBar //不顯示應用程序標題欄 android:theme=@android:style/Theme.NoTitleBar.Fullscreen //不顯示應用程序標題欄,並全屏 android:theme=Theme.Light //背景為白色 android:theme=Theme.Light.NoTitleBar //白色背景並無標題欄 android:theme=Theme.Light.NoTitleBar.Fullscreen //白色背景,無標題欄,全屏 android:theme=Theme.Black //背景黑色 android:theme=Theme.Black.NoTitleBar //黑色背景並無標題欄 android:theme=Theme.Black.NoTitleBar.Fullscreen //黑色背景,無標題欄,全屏 android:theme=Theme.Wallpaper //用系統桌面為應用程序背景 android:theme=Theme.Wallpaper.NoTitleBar //用系統桌面為應用程序背景,且無標題欄 android:theme=Theme.Wallpaper.NoTitleBar.Fullscreen //用系統桌面為應用程序背景,無標題欄,全屏 android:theme=Theme.Translucent //透明背景 android:theme=Theme.Translucent.NoTitleBar //透明背景並無標題 android:theme=Theme.Translucent.NoTitleBar.Fullscreen //透明背景並無標題,全屏 android:theme=Theme.Panel //面板風格顯示 android:theme=Theme.Light.Panel //平板風格顯示
4、Theme和Style
Android裡面除了Theme外還有Style,例如下面是Launcher裡面配置workspace的一個Style
//Edited by mythou //http://www.cnblogs.com/mythou/
Style可以理解為一組屬性集合,方便不同的View設置使用,我們在View裡面使用Style的時候,跟使用Theme是一樣的應用方法。那麼Style和Theme有什麼區別?下面列出兩者區別:
上面就是通過Theme解決程序啟動閃黑屏問題,並且講解了Theme和Style,通過Theme配置,其實還可以做個歡迎頁面。不過我們都希望程序啟動速度越快越好,因此還是需要多多優化自己的程序。
寫在前面最近一直在做畢設項目的准備工作,考慮到可能要用到一個模糊的效果,所以就學習了一些高斯模糊效果的實現。比較有名的就是 FastBlur 以及它衍生的一些優化方案,還
Android 中下拉列表選擇,提供了控件Spinner,現做一個小總結,以備使用。從1.Spinner屬性2.設置Spinner的adapter說起。1.Spinner
為什麼選擇UiAutomator作為親兒子UiAutomator隨Android同步推出,隨Android版本同步升級,經過多次迭代目前已經相當穩定。相比MonkeyRu
Android啟動過程中的第一個進程init,在啟動過程中會啟動兩個關鍵的系統服務進程ServiceManager和Zygote。本文要介紹的就是Zygote進程的啟動,