Android APP應用啓動頁白屏(StartingWindow)優化

版權聲明:本文爲HaiyuKing原創文章,轉載請註明出處!android

前言

 StartingWindow 的處理方式:git

  1. 使用系統默認的 StartingWindow :用戶點了應用圖標啓動應用,立刻彈出系統默認的 StartingWindow(就是作動畫的那個 Window) ,等應用加載好第一幀以後,StartingWindow 消失,顯示應用第一幀,無縫銜接,體驗還不錯,這也是一般大部分 Android 應用的場景;好比大部分 Android 系統的自帶應用,即刻、汽車之家
  2. 本身定製簡單的 StartingWindow :用戶點了應用圖標啓動應用,彈出應用本身定製的StartingWindow,等應用加載好第一幀以後,定製的 StartingWindow 消失,顯示應用主界面,因爲 StartingWindow 是本身定製的,啓動的時候 Decode Bitmap 或者 Inflate 自定義 Layout 會有必定的耗時,可是總的來講與系統默認的差異不大,用戶體驗優;這樣的應用包括淘寶、京東、微博、今日頭條、美團
  3. 把 StartingWindow 禁掉或者設置透明 :用戶點了應用圖標啓動應用,因爲 StartingWindow 被禁掉或者被設置透明,因此會出現點擊圖標後,除了圖標黑一下以外沒有任何響應,過個 1-N 秒(取決於應用第一幀的加載速度),直接顯示應用主界面。這樣的毒瘤應用包括:微信、微信讀書、UC 瀏覽器、支付寶、工商銀行、米家等。

-------摘自《知乎 救救你的 StartingWindowgithub

android開發者應該都有這樣的體會:開發到必定的階段,包變得很大了,每次啓動APP的時候,老是有白屏一閃而過(白屏的時間和包的大小成正比!)。瀏覽器

-------摘自《Android APP啓動白屏優化微信

本文講的是第二種處理方式。app

效果圖

未處理以前:

處理以後(純顏色):

處理以後(背景圖片):

代碼分析

暫無ide

使用步驟

1、項目組織結構圖

注意事項:佈局

一、  導入類文件後須要change包名以及從新import R文件路徑優化

二、  Values目錄下的文件(strings.xml、dimens.xml、colors.xml等),若是項目中存在,則複製裏面的內容,不要整個覆蓋動畫

2、導入步驟

一、在styles.xml文件中添加如下代碼

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <!-- 應用啓動頁(StartingWindow)的theme -->
    <style name="AppTheme.StartingWindowTheme" parent="AppTheme">
        <!-- 能夠設置成純顏色(設置一個和Activity UI類似的背景) -->
        <!--<item name="android:windowBackground">@color/startingwindow_bgcolor</item>-->
         <!--也能夠設置成一張圖片 -->
        <item name="android:windowBackground">@drawable/startingwindow_bg</item>
    </style>

</resources>

二、在colors.xml文件中添加如下代碼【根據實際狀況來添加,若是使用純顏色做爲啓動頁白屏的背景的話,則須要添加

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <!-- 應用啓動頁(StartingWindow)的theme的背景色 -->
    <color name="startingwindow_bgcolor">#00bfff</color>
</resources>

二、將背景圖片添加到項目中【Demo中的背景圖片是參考《簡書APP》製做的】【根據實際狀況添加,通常會使用

三、在AndroidManifest.xml中給首頁activity(第一個頁面,通常是歡迎界面)設置自定義的theme

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.why.project.androidstartingwindowdemo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <!--將首頁的them設置成自定義的樣式-->
        <activity android:name=".MainActivity" android:theme="@style/AppTheme.StartingWindowTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

四、在Activity中恢復原有的style樣式【不然的話,當activity的佈局文件設置背景色爲透明的時候,就會發現窗口的背景仍是那張圖片

package com.why.project.androidstartingwindowdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTheme(R.style.AppTheme);//恢復原有的樣式
        setContentView(R.layout.activity_main);
    }
}

3、使用方法

擴展:若是在styles.xml文件中將啓動頁窗口背景圖片(android:windowBackground)設置爲歡迎界面的背景圖片,而後歡迎界面佈局文件中將背景(android:background)設置爲透明,Activity中不恢復原有的樣式,那麼這樣就能夠實現APP啓動後白屏部分和歡迎界面是同一張背景圖片。

須要注意,若是將以前歡迎界面的背景圖片做爲窗口背景圖片,那麼就須要考慮到底部導航欄的高度的問題。不然背景圖片的底部會被遮蓋住。因此可能須要從新調整歡迎界面的背景圖片。

混淆配置

參考資料

知乎 救救你的 StartingWindow

Android APP啓動白屏優化

Android啓動優化,去除白屏或者黑屏

消除 activity 啓動時白屏、黑屏問題

項目demo下載地址

https://github.com/haiyuKing/AndroidStartingWindowDemo

相關文章
相關標籤/搜索