国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Theme以及解決啟動黑屏的方法詳解

2019-10-21 21:42:54
字體:
來源:轉載
供稿:網友

前言

本文主要介紹了關于Android Theme及解決啟動黑屏的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

1.修改AndroidManifest.xml 設置App的全局Theme或者Activity的界面Theme

<application android:allowBackup="true" android:icon="@drawable/ipod_icon" android:label="@string/app_name" android:launchMode="singleTask"><!-- iPod主界面 --><activity android:name="com.apical.apicalipod.IPodMainActivity"  <!-- 使用上面定義的樣式 mythou--> android:theme="@style/Theme.AppStartLoad" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>//......</application>

•可以在Activity里面增加上面自定義的樣式。另外在Application里面增加也是可以的,而且是全局效果。

•自定義Theme放在 /res/values/styles.xml 里面。如果沒有這個文件,自己添加一個即可。

•如果存在多個Activity切換,中間也可能會存在短暫黑屏問題。原因也是Activity啟動的時候需要初始化加載數據,如果想避免這種情況,可以在你切換的Activity里面增加上面的樣式。

•上面兩種樣式都可以避免黑屏。可以實際測試一下你的程序選擇一種效果。

•這個只是把黑屏避免了,但是如果你程序初始化啟動慢,還是會給人程序啟動慢的感覺。需要自行優化程序初始化過程。

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" //平板風格顯示

Theme和Style

Android里面除了Theme外還有Style,例如下面是Launcher里面配置workspace的一個Style

<style name="WorkspaceIcon">  <item name="android:layout_width">match_parent</item>  <item name="android:layout_height">match_parent</item>  <item name="android:layout_gravity">center</item>  <item name="android:gravity">center_horizontal</item>  <item name="android:singleLine">true</item>  <item name="android:ellipsize">marquee</item>  <item name="android:textSize">12sp</item>  <item name="android:textColor">#FFF</item>  <item name="android:shadowRadius">2.0</item>  <item name="android:shadowColor">#B0000000</item> </style>

Style可以理解為一組屬性集合,方便不同的View設置使用,我們在View里面使用Style的時候,跟使用Theme是一樣的應用方法。那么Style和Theme有什么區別?

下面列出兩者區別: 

•樣式用在單獨的View,如:Button、TextView等

•主題通過AndroidManifest.xml中的和用在整個應用或者某個 Activity,主題對整個應用或某個Activity存在全局性影響。

•如果一個應用使用了主題,同時應用下的view也使用了樣式,那么當主題與樣式屬性發生沖突時,樣式的優先級高于主題。

上面就是通過Theme解決程序啟動閃黑屏問題,并且講解了Theme和Style,通過Theme配置,其實還可以做個歡迎頁面。不過我們都希望程序啟動速度越快越好,因此還是需要多多優化自己的程序。

2.解決啟動黑屏問題:

出現的原因:

1 原因 加載onCreate 方法 執行方法加載數據耗時,需要跑完onCreate和onResume才會顯示界面

2 閃黑屏的原因主要是我們啟動Activity的時候,需要跑完onCreate和onResume才會顯示界面。也就是說需要處理一些數據后,才會顯示。按照這種思路,是不是我把初始化的工作盡量減少就可以避免黑屏?事實是,就算你onCreate啥都不做,仍然會閃一下黑屏,因為初始化解析界面時需要一定時間。下面是解決辦法:

解決:

設置背景圖Theme

<style name="Theme.AppStartLoad" parent="android:Theme">  <item name="android:windowBackground">@drawable/ipod_bg</item>  <item name="android:windowNoTitle">true</item> </style>// ps: 如果要設置這個靜止頁全屏則外加一句:  // <item name="android:windowFullscreen">true</item> 即可//2、設置透明Theme<style name="Theme.AppStartLoadTranslucent" parent="android:Theme">  <item name="android:windowIsTranslucent">true</item>  <item name="android:windowNoTitle">true</item> </style>

上面我定義了兩種Theme,第一種Theme就是設置一張背景圖。當程序啟動時,首先顯示這張背景圖,避免出現黑屏。第二種Theme是把樣式設置為透明,程序啟動后不會黑屏而是整個透明了,等到界面初始化完才一次性顯示出來。

下面說說兩種方式的優缺點:

•Theme1 程序啟動快,界面先顯示背景圖,然后再刷新其他界面控件。給人刷新不同步感覺。 

•Theme2 給人程序啟動慢感覺,界面一次性刷出來,刷新同步。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐边县| 务川| 荣成市| 广昌县| 巢湖市| 桃源县| 河东区| 马山县| 青铜峡市| 汝城县| 乌拉特后旗| 汨罗市| 和政县| 巴南区| 黔江区| 都匀市| 湖南省| 汤阴县| 中阳县| 景洪市| 新沂市| 枣阳市| 锡林浩特市| 科技| 齐河县| 楚雄市| 洪洞县| 五莲县| 阳信县| 汝州市| 东平县| 嘉兴市| 柳河县| 塔河县| 广西| 泾川县| 城步| 同心县| 双鸭山市| 乐山市| 贵州省|