ページ

2013/09/16

[Android] 最初のActivityが起動するまでの間だけスプラッシュ画面を表示する方法

|
起動後、数秒間表示するスプラッシュ画面の実装については色々解説されていますが
最初のActivityが起動するまでのわずかな時間だけ別の画像を表示する方法が
なかなか分からなかったのでメモします。

ユーザからすればスプラッシュ画面は操作するまでの時間が長くなるだけなので避けるべきですが、
・Application#onCreate()で重たい処理が必要(何かのSDKの初期化等)で、
 Activityの起動まで時間がどうしても長くなってしまう
・ActivityのsetContentView()完了までの時間が長く、
 それまでの間にデフォルトのActionBarが表示されてしまうのが嫌
・アプリ内でテーマを選べるようにしたいが、Activity起動直後はデフォルトのテーマのスタイルで
 画面が表示されてしまうのが嫌
などなど、初期画面を表示するまでの時間だけスプラッシュを表示しておきたいという場合があると思います。 そんな場合の対処方法です。
起動直後、こんな画面を表示させます。(小さいアイコンだけで寂しいですが、サンプルですので…)

まず、アプリ全体では背景のみのテーマを設定します。
AndroidManifest.xmlのapplicationタグ(android:theme)に、起動時のみ使うテーマを設定します。
ここではAppFirstThemeとしています。

この内容は以下のようなものです。
ActionBarSherlockを使っているためTheme.Sherlock.Light.NoActionBarとなっていますが
以下のような、ActionBarもTitleもないスタイルであれば良いはずです。
以下のようなものでも良いです(このままではActionBar導入前のバージョンだとダメですが)。 次に、windowBackgroundに設定している@drawable/splashですが、以下のようなものです。
ここでは下のbitmapに@drawable/ic_launcherを設定していますが、これが中央に表示させる画像です。 そして、Activityでは以下のようにonCreateでテーマを設定します。
このActivityについては、AndroidManifest.xmlでandroid:themeを設定しません。 以上です。

0 件のコメント: