1. 程式人生 > >Android啟動頁面的正確開啟方式

Android啟動頁面的正確開啟方式

現在APP的啟動頁面(Splash Screen)好多都是等待3秒,好一點的還可以跳過,但是有的跳過也是假的按鈕。當然像一些大廠的APP,像網易新聞等啟動頁面都是廣告,人家要收廣告費的。但是,對於一些普通的APP,有的也出現等待三秒的啟動畫面,出現一個大大的logo,好像告訴使用者他開啟的是什麼應用,加深使用者的映像,這完全是浪費使用者的時間,給使用者很差的體驗!其實我只想快點進入APP啊!!!下面說下如何正確的開啟Android啟動頁面。

Google的推薦

你也許很驚訝谷歌是支援開發者使用啟動頁面的,在[材料設計(Material Design)規範](https://www.google.com/design/spec/patterns/launch-screens.html)裡面有寫到(連結需要翻牆)。但是,以前google卻把啟動頁面當反面教材來講,看[這裡](https://youtu.be/pEGWcMTxs3I?t=1434)(連結需要翻牆)。所以,該怎麼辦呢?

Android啟動頁面的正確方式

我相信google的說法不會自相矛盾的,新的建議和舊的建議都是站在一個角度來的,也就是說,最好不要浪費使用者的時間去開啟無用的啟動頁面。然而,好多應用一開始啟動會花費一些時間,特別是第一次,你無法避免它,那麼就可能會出現一個空白的頁面,所以,既然這樣,為什麼不給使用者一個更加友好的頁面呢?這就是google的建議,不要浪費使用者的時間,但是也不要給使用者一個空白的頁面,或者是一個還沒初始化好的應用。
你會發現,最近谷歌更新的應用裡面也使用了啟動頁面,比如,看一看YouTube的啟動頁面:

你看到在這個APP的啟動頁面所花費的時間正是APP所初始化配置自己的時間,第一次啟動也是這樣的,所以第一次是最慢的,但是如果有快取了,那麼每次再開啟應該是立即打開了吧。

實現一個啟動頁面(Splash Screen)

實現一個啟動頁面可能和你想象的有點不一樣。這個啟動的頁面必須是立即準備好的頁面,即使是在Activity中載入一個xml頁面也要是立刻載入好的。
所以,一般不會用layout來當啟動頁面。取而代之的是用一個顏色作為你的Activity的主題背景,接下來,在你的res/drawable資料夾下建立一個XML的drawable。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
>
<item android:drawable="@color/gray"/> <item> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher"/> </item> </layer-list>
這裡,我設定了背景顏色和一張居中的圖片。
然後,在主題中,將這個設定為Activity的背景。開啟你的styles.xml然後為你的Activity新增一個新的主題。
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>

</resources>
在你新的SplashTheme中,設定視窗背景屬性為我們之前寫的XML的drawable,就是layer-list的xml。然後在你的AndroidManifest.xml中配置一下就好了。
<activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
最後,在你的SplashActivity.class檔案中,編碼直接進入主頁面就行了。
public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}
這裡發現你並沒有為Activity設定layout檢視,檢視來自於主題!所以,這應該是最快的方法啟動頁面了(相比較載入layout檢視)。如果你一定要通過載入layout來顯示頁面,可能你初始化完了才跳出頁面,這時已經有點遲了,所以,你應該考慮用極短的時間來顯示載入layout檢視。

正確的開啟它

當你完成這些步驟,你就正確的完成了啟動頁面。

這裡寫圖片描述

不要再浪費使用者的時間了!但是,當用戶第一次啟動等待的時候還是要展示一些友好的東西給使用者而不是空白!

最後,這裡是原文隨便翻譯的,如果有什麼不對的還望指出,自己就當學習筆記記錄下來。