打造啟動頁面

啟動頁面

目前刚陡,很多 Android 應用都有一個啟動界面 (Launch/Splash Screen)陆盘,即應用在從桌面或應用抽屜啟動的過程中舷蟀,顯示的一個有內(nèi)容的界面恤磷,而不是一個空白頁;在應用運行時野宜,啟動界面則不會出現(xiàn)扫步。

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

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

  • 另一種是專門在應用啟動時顯示的品牌頁 (Branded Launch Screen),它可以在應用啟動的短暫時間內(nèi)展示應用的品牌信息原茅,這有利于提升應用的品牌辨識度吭历。例如以下三款應用的啟動界面都顯示了自家應用的 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(不透明),以防主題轉(zhuǎn)換時發(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>

不過,在調(diào)用 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 之間切換的延時淳梦,不過應用可以實現(xiàn)根據(jù)不同的啟動狀態(tài)跳轉(zhuǎn)到不同 Activity 的功能析砸。在此不過多討論。

歡迎關注我

簡書:http://www.reibang.com/u/5f3130bdf4fc

Github:https://github.com/huangziye

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爆袍,一起剝皮案震驚了整個濱河市首繁,隨后出現(xiàn)的幾起案子作郭,更是在濱河造成了極大的恐慌,老刑警劉巖弦疮,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夹攒,死亡現(xiàn)場離奇詭異,居然都是意外死亡胁塞,警方通過查閱死者的電腦和手機咏尝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啸罢,“玉大人编检,你說我怎么就攤上這事∷趴罚” “怎么了蒙谓?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長训桶。 經(jīng)常有香客問我累驮,道長,這世上最難降的妖魔是什么舵揭? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任谤专,我火速辦了婚禮,結果婚禮上午绳,老公的妹妹穿的比我還像新娘置侍。我一直安慰自己,他們只是感情好拦焚,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布蜡坊。 她就那樣靜靜地躺著,像睡著了一般赎败。 火紅的嫁衣襯著肌膚如雪秕衙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天僵刮,我揣著相機與錄音据忘,去河邊找鬼。 笑死搞糕,一個胖子當著我的面吹牛勇吊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窍仰,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼汉规,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了驹吮?” 一聲冷哼從身側(cè)響起针史,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤膏燕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后悟民,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡篷就,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年射亏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竭业。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡智润,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出未辆,到底是詐尸還是另有隱情窟绷,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布咐柜,位于F島的核電站兼蜈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拙友。R本人自食惡果不足惜为狸,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遗契。 院中可真熱鬧辐棒,春花似錦、人聲如沸牍蜂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲫竞。三九已至辐怕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贡茅,已是汗流浹背秘蛇。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留顶考,地道東北人赁还。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像驹沿,于是被迫代替她去往敵國和親艘策。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容