倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

はじめての幻獣 Griffon 研 (18) : 独自のスプラッシュ・スクリーンを使う install-plugin splash

今回はアプリケーション実行時にスプラッシュ・スクリーンが表示されるようにしてみます(一覧)。 これには「Splash Plugin」を使用します。

Splash Plugin をインストールする


Splash Plugin をインストールするには Griffon プロジェクトのルートフォルダ上で以下のコマンドを実行します:

griffon install-plugin splash

Splash Plugin をインストールするだけで以下のような画像がスプラッシュ・スクリーンとして表示されるように設定されます。 Griffon 0.9.5 を使ってる場合は「追記」参照

Griffon アプリケーションのライフサイクル Overview


さて、スプラッシュ・スクリーンにデフォルトの画像というのは素っ気ないので独自の画像を使えるようにしてみよう。 と思って「Splash Plugin」のドキュメントを読んでみても、説明が簡潔すぎてどう設定すればいいのか一見して不明。 で、プロジェクト内のファイルをあれこれ見ていると、

  • $basedir/griffon-app/lifecycle/Initialize.groovy

ファイル内にスプラッシュ・スクリーンの設定っぽいコードが書かれているのを発見。 「Splash Plugin」をインストールした際にこのコードも追加されたようです*1。 独自のスプラッシュ・スクリーンを使うには、このファイルに設定を書けばよいようです。 まぁ、それは次節に回すことにして、ここでは Griffon アプリケーションのライフサイクルを概観しておきましょう。

Griffon アプリケーションには以下の4つのフェーズアプレットの場合は5つ)からなるライフサイクルがあります:

フェーズ 説明 Splash プラグインの処理
Initialize アプリケーションのインスタンス
設定の読み込み
画像の設定
スプラッシュ・スクリーンの表示
Startup 開始時の MVC グループをインスタンス
Ready Ready フェーズ後にアプリケーション・フレームを表示 スプラッシュ・スクリーンの破棄
Shutdown アプリケーションの終了
Stop アプレットの終了(アプレットのみ)

ユーザーがアプリケーションを使用できる状態はこれらのフェーズには含まれていません。 「Initialize」、「Startup」、「Ready」フェーズはユーザーがアプリケーションを実行して使用できるようになるまでのフェーズ、「Shutdown」、「Stop」はユーザーがアプリケーションを終了した後のフェーズです。

「$basedir/griffon-app/lifecycle」フォルダ下には

  • Initialize.groovy
  • Startup.groovy
  • Ready.groovy
  • Shutdown.groovy
  • Stop.groovy

という .groovy スクリプトがありますが、これらの内容は対応する名前のフェーズ時に実行されるようです。 まぁ、Griffon アプリケーションのライフサイクルに関しては次回にもう少し詳しく見ることにしようかと。

スプラッシュ・スクリーンに独自の画像を使う


さて、では独自の画像をスプラッシュ・スクリーンとして使えるように設定してみましょう。 Griffon 0.9.5 を使ってる場合は「追記」参照

画像ファイルの配置

まずはスプラッシュ・スクリーンとして使用したい画像ファイルを用意。 配置場所は「$basedir/griffon-app/resources」フォルダです。 例えば画像ファイルを splash-screen.png とすると、画像ファイルのパスは以下のようになります(「関数描画アプリケーション」の場合):

  • FunctionPlotter/griffon-app/resources/splash-screen.png

画像ファイルはこんな感じに作ってみました:

Initialize.groovy

スプラッシュ・スクリーンの設定を行うファイルは

  • FunctionPlotter/griffon-app/lifecycle/Initialize.groovy

です。 「Splash Plugin」をインストールした時点で必要なコードを適当にコメントアウトした形で追加してくれているので、「Setting a splash image」以下の必要な部分のコメントを外して、使用したい画像ファイルの名前(ここでは splash-screen.png)を設定しましょう:

def splashScreen = SplashScreen.getInstance()

// Setting a splash image
URL url = this.class.getResource('splash-screen.png')
splashScreen.setImage(url)

// Setting Status Text
//SplashScreen.getInstance().showStatus("Initializing the Controller")
splashScreen.splash()
splashScreen.waitForSplash()

これで、普通に Griffon アプリケーションを実行すれば設定した画像がスプラッシュ・スクリーンとして表示されるはずです。

追記


Griffon 0.9.5 では、設定方法がかなり変わっているようです。 Griffon 0.9.5 に対応する splash プラグインは 0.3 です:

  • splash」 Startup splash screen

プラグインのインストール方法は同じで

griffon install-plugin splash

を実行するだけですが、それだけではスプラッシュ・スクリーンは表示されず、

  • $basedir/griffon-app/lifecycle/Initialize.groovy

に以下のコードを追加する必要があります(以前は自動で対応するコードを追加してくれてました)。

SplashGriffonAddon.display(app)

スプラッシュ・スクリーンの画像を変更したい場合は、

  • $basedir/griffon-app/conf/Config.groovy

に次のように画像ファイルを指定します(「mysplash.jpg」という画像ファイルを表示したい場合):

splash.image = 'mysplash.jpg'

ただし、Griffon 0.9.5, splash 0.3 で試したところ、スプラッシュ・スクリーンは表示されるものの、アプリケーションが起動してもそれが閉じないという悲しい自体に・・・(実行環境によるかも)

Javaによる画像処理プログラミング (I・O BOOKS)

Javaによる画像処理プログラミング (I・O BOOKS)

*1:同様に同フォルダ内の Ready.groovy ファイルにも1行だけコードが追加されています。