LoginSignup
41
32

More than 5 years have passed since last update.

Android スプラシュ画面の実装

Posted at

スプラッシュ画面

起動した際に表示される画面です。
スプラッシュ画面は、プログラムの立ち上げが実行中である段階で表示され、
基本的には立ち上げが完了した時点でメイン画面に切り替わります。

下記画面が起動時のスプラッシュ画面です。
画像はユニティちゃんを拝借。

1485090610oT_NFgDojqET3ul1485090610.gif

実装方法は2種類あり、それぞれの特徴は下記となります。
◆Activityでの実装
 長所
 ・起動させている間に処理を実行することができる
 ・複雑なアニメーションなどを表現できる
 欠点
 ・起動時に数瞬ブランクが表示される

◆Theme指定での実装
 長所
 ・起動時に数瞬ブランクが表示される
 欠点
 ・事前の処理が行えない

今回は特に事前処理がないので、後者ので実装を説明します。
通信で最新の情報などを取得する場合は前者の実装が良いです。

実装

前回のソースからの変更点を記載します。 → Android開発 Hello world表示

スクリーンショット 2017-01-22 22.28.06.png

実装時に新たに追加したファイルは
・splash.xml
・splash.png
となります。

splash.xmlには背景色とスプラッシュ用画像をセンターに表示するように記載します。

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

    <item
        android:drawable="@color/colorBack"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/splash"/>
    </item>

</layer-list>

style.xml に SplashTheme という名前でスタイルを追加します。
中では windowBackground に先ほど作成した splash.xml を指定します。

style.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>

    <style name="SplashTheme" parent="AppTheme">
        <item name="android:windowBackground">@drawable/splash</item>
    </style>
</resources>

Manifestファイルの起動Acivityのthemeに先ほどのスタイルを設定します。

Manifest.xml一部抜粋
    <activity
        android:name=".MainActivity"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

上記の設定で起動時にスプラッシュが表示されるようになりますが、
起動後のMainActivityのテーマがスプラッシュ用のテーマのままなので、
Activity内部で変更する必要があります。
また、スプラッシュ画面はコンマ数秒で終わるので、とりあえず+1秒ほど表示しています。

MainActivity

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // ここで1秒間スリープし、スプラッシュを表示させたままにする。
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
        }
        // スプラッシュthemeを通常themeに変更する
        setTheme(R.style.AppTheme);
        setContentView(R.layout.activity_main);
    }

出来上がりを見ると、フェードイン・フェードアウトをしたくなります。
その場合はActivityでの実装しかありません。

41
32
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
32