Android解決APP啟動白屏

目錄

前言

當APP第一次啟動會有一段時間的白屏,而當代碼變多白屏的時間會更長,這對用戶體驗來說非常差瘫筐,因此我們需要進行處理堤魁,讓用戶感覺不到有白屏的那個間隙喂链。

效果對比

下面是我通過對Application的onCreate進行延時操作來模擬白屏

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        try {
            Thread.sleep(3000);
        }catch (Exception e){}
    }
}

下面是我通過處理解決白屏后的效果的對比


實現(xiàn)步驟

1.增加歡迎頁

增加一個歡迎頁(SplashActivity)

public class SplashActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
    }
}
2.給歡迎頁設置樣式

我們給SplashActivity設置單獨的樣式,我們重點是加了背景和設置狀態(tài)欄背景為白色狀態(tài)欄文字為黑色(因為演示的SplashActivity背景為白色所以設置狀態(tài)欄為白色比較好)妥泉,并且用了沒有ActionBar的樣式

<style name="Theme.WhitePageDemoSplash" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>

        <!--  這三行是重點  -->
        <!--    設置背景椭微,解決白屏的關鍵    -->
        <item name="android:windowBackground">@drawable/bg_splash</item>
        <!-- 設置狀態(tài)欄為白色的,狀態(tài)欄文字為黑的 -->
        <item name="android:statusBarColor" tools:targetApi="l">@color/white</item>
        <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
    </style>

AndroidManifest.xml中設置上

<application
        android:allowBackup="true"
        android:name=".MyApplication"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.WhitePageDemo">
        <activity android:name=".SplashActivity" android:theme="@style/Theme.WhitePageDemoSplash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity" android:launchMode="singleTask" android:screenOrientation="portrait"/>
    </application>
3.給樣式設置背景

接下來是編寫背景的xml文件盲链,我設置背景為白色蝇率,這也是與SplashActivity對應起來,然后加了一張全屏縮放的圖片刽沾,圖片的背景透明

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/white" />
        </shape>
    </item>

    <item>
        <bitmap
            android:gravity="fill"
            android:src="@drawable/splashlog" />
    </item>
</layer-list>
4.調整歡迎頁布局

歡迎頁的布局我們也用這張圖片本慕,也是占滿整個布局并縮放,并且加了一個顯示”跳過“的TextView

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@color/white"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:src="@drawable/splashlog"
        android:scaleType="fitXY"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <TextView
        android:text="跳過"
        android:textSize="18sp"
        android:textColor="@color/black"
        android:layout_gravity="right"
        android:layout_marginTop="40dp"
        android:layout_marginRight="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</FrameLayout>

接下來我們看效果



我們發(fā)現(xiàn)頁面會向下移動一下侧漓,那是因為當SplashActivity的布局加載出來的時候锅尘,會有一塊狀態(tài)欄高度的下移,并且如果有虛擬鍵盤的話也會影響整個視覺效果的過渡布蔗,接下來我們只需要把SpalshActivity的布局調整為全屏即可

5.讓歡迎頁充滿全屏

這里給大家介紹個工具庫(https://github.com/Blankj/AndroidUtilCode)藤违,非常好用

 //工具類
implementation 'com.blankj:utilcodex:1.30.6'

具體操作如下:

public class SplashActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        //設置下布局向上移動狀態(tài)欄的高度
        BarUtils.setStatusBarColor(this, ColorUtils.getColor(R.color.white));
        //設置隱藏虛擬按鍵
        BarUtils.setNavBarVisibility(this,false);
    }
}

最后效果如下,可以看到是非常平滑的過渡


案例源碼

https://gitee.com/itfitness/white-page-demo

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末纵揍,一起剝皮案震驚了整個濱河市顿乒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泽谨,老刑警劉巖璧榄,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異隔盛,居然都是意外死亡犹菱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門吮炕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腊脱,“玉大人,你說我怎么就攤上這事龙亲∩掳迹” “怎么了悍抑?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長杜耙。 經常有香客問我搜骡,道長,這世上最難降的妖魔是什么佑女? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任记靡,我火速辦了婚禮,結果婚禮上团驱,老公的妹妹穿的比我還像新娘摸吠。我一直安慰自己,他們只是感情好嚎花,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布寸痢。 她就那樣靜靜地躺著,像睡著了一般紊选。 火紅的嫁衣襯著肌膚如雪啼止。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天兵罢,我揣著相機與錄音献烦,去河邊找鬼。 笑死趣些,一個胖子當著我的面吹牛仿荆,可吹牛的內容都是我干的。 我是一名探鬼主播坏平,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼拢操,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了舶替?” 一聲冷哼從身側響起令境,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎顾瞪,沒想到半個月后舔庶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡陈醒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年惕橙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钉跷。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡弥鹦,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情彬坏,我是刑警寧澤朦促,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站栓始,受9級特大地震影響务冕,放射性物質發(fā)生泄漏。R本人自食惡果不足惜幻赚,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一禀忆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧落恼,春花似錦油湖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撤奸。三九已至吠昭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胧瓜,已是汗流浹背矢棚。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留府喳,地道東北人蒲肋。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像钝满,于是被迫代替她去往敵國和親兜粘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容