a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統(tǒng) > Android > 正文

Android 避免APP啟動閃黑屏的解決辦法(Theme和Style)

2020-04-11 12:04:18
字體:
供稿:網(wǎng)友

前幾天Boss就反應(yīng)說,機(jī)器每次啟動程序都會閃一下黑屏,這個客戶不接受。沒辦法,只能想想怎么解決,最后找到了下面的方法。閃黑屏的原因主要是我們啟動Activity的時候,需要跑完onCreate和onResume才會顯示界面。也就是說需要處理一些數(shù)據(jù)后,才會顯示。按照這種思路,是不是我把初始化的工作盡量減少就可以避免黑屏?事實(shí)是,就算你onCreate啥都不做,仍然會閃一下黑屏,因?yàn)槌跏蓟馕鼋缑鏁r需要一定時間。下面是解決辦法:
1、自定義Theme

復(fù)制代碼 代碼如下:

設(shè)置背景圖Theme
<style name="Theme.AppStartLoad" parent="android:Theme"> 
    <item name="android:windowBackground">@drawable/ipod_bg</item> 
    <item name="android:windowNoTitle">true</item> 
</style>
//2、設(shè)置透明Theme
<style name="Theme.AppStartLoadTranslucent" parent="android:Theme"> 
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item> 
</style>

上面我定義了兩種Theme,第一種Theme就是設(shè)置一張背景圖。當(dāng)程序啟動時,首先顯示這張背景圖,避免出現(xiàn)黑屏。第二種Theme是把樣式設(shè)置為透明,程序啟動后不會黑屏而是整個透明了,等到界面初始化完才一次性顯示出來。下面說說兩種方式的優(yōu)缺點(diǎn):
•Theme1 程序啟動快,界面先顯示背景圖,然后再刷新其他界面控件。給人刷新不同步感覺。
•Theme2 給人程序啟動慢感覺,界面一次性刷出來,刷新同步。
 
2、修改AndroidManifest.xml
為了使上面Theme生效,我們需要設(shè)置一些Activity的Theme
復(fù)制代碼 代碼如下:

<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啟動的時候需要初始化加載數(shù)據(jù),如果想避免這種情況,可以在你切換的Activity里面增加上面的樣式。
•上面兩種樣式都可以避免黑屏??梢詫?shí)際測試一下你的程序選擇一種效果。
•這個只是把黑屏避免了,但是如果你程序初始化啟動慢,還是會給人程序啟動慢的感覺。需要自行優(yōu)化程序初始化過程。
 
3、Theme屬性詳解
復(fù)制代碼 代碼如下:

android:theme="@android:style/Theme.Dialog" //Activity顯示為對話框模式
android:theme="@android:style/Theme.NoTitleBar" //不顯示應(yīng)用程序標(biāo)題欄
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不顯示應(yīng)用程序標(biāo)題欄,并全屏
android:theme="Theme.Light " //背景為白色
android:theme="Theme.Light.NoTitleBar" //白色背景并無標(biāo)題欄
android:theme="Theme.Light.NoTitleBar.Fullscreen" //白色背景,無標(biāo)題欄,全屏
android:theme="Theme.Black" //背景黑色
android:theme="Theme.Black.NoTitleBar" //黑色背景并無標(biāo)題欄
android:theme="Theme.Black.NoTitleBar.Fullscreen" //黑色背景,無標(biāo)題欄,全屏
android:theme="Theme.Wallpaper" //用系統(tǒng)桌面為應(yīng)用程序背景
android:theme="Theme.Wallpaper.NoTitleBar" //用系統(tǒng)桌面為應(yīng)用程序背景,且無標(biāo)題欄
android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" //用系統(tǒng)桌面為應(yīng)用程序背景,無標(biāo)題欄,全屏
android:theme="Theme.Translucent" //透明背景
android:theme="Theme.Translucent.NoTitleBar" //透明背景并無標(biāo)題
android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景并無標(biāo)題,全屏
android:theme="Theme.Panel " //面板風(fēng)格顯示
android:theme="Theme.Light.Panel" //平板風(fēng)格顯示

4、Theme和Style
Android里面除了Theme外還有Style,例如下面是Launcher里面配置workspace的一個Style
復(fù)制代碼 代碼如下:

 <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設(shè)置使用,我們在View里面使用Style的時候,跟使用Theme是一樣的應(yīng)用方法。那么Style和Theme有什么區(qū)別?

下面列出兩者區(qū)別:
•樣式用在單獨(dú)的View,如:Button、TextView等

•主題通過AndroidManifest.xml中的<application>和<activity>用在整個應(yīng)用或者某個 Activity,主題對整個應(yīng)用或某個Activity存在全局性影響。

•如果一個應(yīng)用使用了主題,同時應(yīng)用下的view也使用了樣式,那么當(dāng)主題與樣式屬性發(fā)生沖突時,樣式的優(yōu)先級高于主題。

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人久久18免费观看 | 一级篇 | 在线播放av片 | 日本一区二区高清 | 中文字幕国产高清 | 欧美精品一区三区 | 国产中文字幕免费观看 | 国产乱码精品一区二区三区忘忧草 | 亚洲欧美日韩天堂 | 欧美精品亚洲 | 国产日韩欧美视频 | 欧美色综合 | 日韩成人av在线 | 亚洲一区中文字幕 | 亚洲xxxxx| 亚洲成人另类 | 精品www| 成人综合视频在线 | 日韩福利在线观看 | 亚洲精品在线免费 | 青青草狠狠干 | 精品国产乱码久久久久久1区2区 | 天天看夜夜 | 黄色大片网站 | 成人av免费在线观看 | 欧美精品三区 | 亚洲精品一区二区三区蜜桃久 | 中文字幕不卡在线观看 | 神马香蕉久久 | 国产精品二区一区二区aⅴ污介绍 | 国产日产久久久久久 | 综合激情视频 | 欧美与黑人午夜性猛交久久久 | 成人免费视屏 | 日本做暖暖视频高清观看 | 久在线视频 | 99国产精品视频免费观看一公开 | 精品欧美一区二区三区久久久 | 伊人超碰在线 | 久久999免费视频 | 久久成年人视频 |