打造啟動頁面

啟動頁面

目前,很多 Android 應用都有一個啟動界面 (Launch/Splash Screen),即應用在從桌面或應用抽屜啟動的過程中,顯示的一個有內容的界面,而不是一個空白頁;在應用運行時,啟動界面則不會出現。

根據 Material Design 的定義,啟動界面可分為兩種:

  • 一種是應用在數據加載過程中顯示的不可交互的占位符界面 (Placeholder UI),它適用于應用啟動以及應用內 Activity 切換的場景,好處是讓用戶感知數據正在加載,而不致于誤認為應用無響應。在此暫不討論這種啟動界面。

  • 另一種是專門在應用啟動時顯示的品牌頁 (Branded Launch Screen),它可以在應用啟動的短暫時間內展示應用的品牌信息,這有利于提升應用的品牌辨識度。例如以下三款應用的啟動界面都顯示了自家應用的 logo;另外,也可以顯示應用的品牌口號,不過要避免使用需要用戶仔細閱讀的大段文字。

方式一

分為3個步驟:

    1. 設置主題元素
    1. 定義啟動界面
    1. 切換應用主題

1. 設置主題元素

In res/values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name=”AppTheme.Launcher”>
        <item name="android:windowBackground">@drawable/launch_screen</item>
        <!-- Optional, on Android 5.0+ you can modify the colorPrimaryDark color to match the windowBackground color for further branding-->
        <!-- <item name="colorPrimaryDark">@android:color/white</item> -->
    </style>

</resources>

由于啟動界面只在應用啟動瞬間顯示,所以不能直接在 AppTheme 中直接修改主題元素,而是需要新建一個繼承 AppTheme 的 Launcher Theme,命名為 AppTheme.Launcher,并且只修改其中的 android:windowBackground 屬性為想要的 drawable 資源即可。對于 Android 5.0 及以上的設備,還可以修改 colorPrimaryDark 屬性為匹配啟動界面的顏色,提供更好的視覺效果。

2. 定義啟動界面

In res/drawable/launch_screen.xml

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:opacity="opaque">

    <!-- The background color, preferably the same as your normal theme -->
    <item android:drawable="@android:color/white"/>

    <!-- Your product logo - 144dp color version of your app icon -->
    <item>
        <bitmap
            android:src="@drawable/product_logo_144dp"
            android:gravity="center"/>
    </item>
</layer-list>

在上面 AppTheme.Launcher 主題中 android:windowBackground 屬性設置的 drawable 資源不能是一個圖片,因為圖片會拉伸至整個屏幕的尺寸;所以這里需要定義一個 XML 文件來設置啟動界面。注意 layer-list 的 android:opacity 透明度屬性要設置為 opaque(不透明),以防主題轉換時發(fā)生閃屏的情況。

3. 切換應用主題

設置好 Launcher Activity 在應用啟動瞬間應用的主題后,即可在 AndroidManifest.xml 中設置好,這樣 Launcher Activity 就默認使用 AppTheme.Launcher 主題了,使啟動界面得以顯示。

In AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <application ...>
        <activity
            android:name=".MainActivity"
            android:theme="@style/AppTheme.Launcher">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

不過,在調用 Launcher Activity 的 onCreate() 時,其主題應該切換回 AppTheme,這里在 super.onCreate() 之前通過 setTheme(R.style.AppTheme) 設置好。

In MainActivity.java

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // Make sure this is before calling super.onCreate
        setTheme(R.style.AppTheme);
        super.onCreate(savedInstanceState);
        // ...
  }
}

方式二

新建一個專門的 Splash Activity,使其作為應用的 Launcher Activity;也就是說,應用啟動時,啟動界面顯示完即跳到 Splash Activity 中,隨后再跳到其它 Activity。雖然這樣增加了 Activity 之間切換的延時,不過應用可以實現根據不同的啟動狀態(tài)跳轉到不同 Activity 的功能。在此不過多討論。

歡迎關注我

簡書:http://m.itdecent.cn/u/5f3130bdf4fc

Github:https://github.com/huangziye

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容