Androidアプリ開発において、スプラッシュ画面はアプリ起動時にユーザーが最初に目にする画面であり、ブランドイメージの定着や初期ローディングの演出に欠かせません。全画面表示にすることで、余計なUI要素がなく没入感の高い体験を提供できます。ここでは、コードベースでスプラッシュ画面を全画面表示にする具体的な実装方法を説明します。
実装手順(コードを用いた全画面設定)
テーマによる設定ではなく、ActivityのonCreateでWindowフラグを直接操作する方法を採用します。この手法はAPIレベル1から利用可能で、テーマの継承関係に依存しません。
1. スプラッシュActivityの作成
以下のようにSplashActivityを定義します。タイトルバーを非表示にし、ステータスバーも非表示にするフラグを設定します。
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// タイトルバーを削除(setContentViewより前に呼ぶ)
requestWindowFeature(Window.FEATURE_NO_TITLE);
// ステータスバーも含めて全画面化
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_splash);
// 必要に応じて数秒後にメインActivityへ遷移(例)
new Handler().postDelayed(() -> {
startActivity(new Intent(this, MainActivity.class));
finish();
}, 2000);
}
}
ポイント:requestWindowFeature(Window.FEATURE_NO_TITLE)でタイトルバーを除去し、FLAG_FULLSCREENでステータスバーも非表示にしています。これにより真の全画面状態になります。
2. AndroidManifest.xmlでの宣言
SplashActivityをランチャーActivityとして登録します。テーマは特に指定せず、コード内で全画面設定を行っているため、デフォルトのテーマで問題ありません。
<activity
android:name=".SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
3. レイアウトファイルの準備
スプラッシュ画面用のレイアウトは、ルート要素の幅・高さをmatch_parentにして全画面を覆うようにします。背景色や中央寄せのロゴなどを自由に配置してください。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_splash_logo" />
</FrameLayout>
補足:別のアプローチとの比較
テーマ(Theme.AppCompat.NoActionBarなど)を使う方法も一般的ですが、コード内で動的に制御するほうが柔軟性が高いです。また、Android 4.4以降ではView.SYSTEM_UI_FLAG_IMMERSIVE_STICKYなどを組み合わせることで、さらに没入感のある全画面表示を実現できますが、スプラッシュ画面の単純な全画面表示には上記のコードで十分です。
スプラッシュ画面の表示時間はユーザー体験に影響を与えるため、2〜3秒程度に抑え、その間に必要な初期化処理を完了させることをおすすめします。