Android 關於APP啟動時白(黑)屏解決辦法
阿新 • • 發佈:2019-02-11
APP啟動時,在點選APP到APP啟動頁加載出來會有一段時間的白屏或黑屏,很醜陋。。。其實,黑屏或者白屏這裡並不是不正常,而是還沒載入到佈局檔案,就已經顯示了window視窗背景,黑屏白屏就是window視窗背景。
那window視窗背景在那裡提供呢?在提供theme裡面,如下提供的是白色背景,那就是啟動時白屏一會兒的顏色設定。
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true </item>
<item name="android:windowBackground">@color/white</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
所以,在theme設定windowBackground就可以解決啟動時白屏黑屏一會兒了,下面提供三種解決方案:
一、提供.png背景圖
提供背景圖是解決的一個方法,但是要適配各種螢幕,提供很多張圖片。除非圖片非常複雜只能用背景圖了就用這種方法吧,否則個人不建議。
二、提供.9.png(NinePatch)背景圖片
如果圖片不是很複雜,可以做成NinePatch圖片,那就直接製作NinePatch圖片,提供一張就可以適配任何手機,何樂而不為呢。
三、使用Layout-list製作背景圖片
如果可以使用這種方式,推薦使用這種Layout-list製作背景圖片。前2種都是使用圖片佔用記憶體啊,使用Layout-list比較省記憶體,做出app也不會說因為圖片多體積變大吧。
AndroidManifest.xml,這裡注意application使用的theme是AppTheme,而LauncherActivity使用的主題是StartAppTheme。這樣做的效果是隻要LauncherActivity使用StartAppTheme主題,其他Activity都是用AppTheme主題哦。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.launcheractivity"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".LauncherActivity"
android:label="@string/app_name"
android:theme="@style/StartAppTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"></activity>
</application>
</manifest>
styles.xml,2個主題設定
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light.NoTitleBar">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/white</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
<style name="StartAppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/layout_list_start_pic</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
</resources>
layout_list_start_pic.xml 啟動頁面使用這個作為背景圖片
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 設定整個螢幕背景為白色 -->
<item >
<color android:color="@color/white"/>
</item>
<!-- 中間logo -->
<item >
<bitmap
android:gravity="center"
android:src="@drawable/ic_launcher" />
</item>
<!-- 底部圖表 -->
<item android:bottom="10dp">
<bitmap
android:gravity="bottom|center_horizontal"
android:src="@drawable/copyright" />
</item>
</layer-list>