2010年12月30日木曜日

[Android] SurfaceviewにToastを表示するには

How to show Toast when a SurfaceView is being shown

ToastはActivityだけではなく、SurfaceViewでも表示できます。
ただしToastはContextオブジェクトを必要とするのでちょっと工夫します。
SurfaceViewにToastを実装する前のコードがこちらです。

マニフェスト(AndroidManifest.xml)


Main.java (Activity)


MySurfaceView.java (SurfaceView)


このコードを端末を回転させるたびにToastを表示させるように改造します。
回転のたびに呼び出されるSurfaceViewのonSizeChangedメソッドでToastを表示する方法を2つあげてみました。

1,コンストラクターのcontextを使う
2,ActivityのインナークラスにしてgetApplicationContext()を使う

1,コンストラクターのcontextを使う

1つ目の方法は、SurfaceViewがコンストラクターで受け取ったcontextをToastに渡す方法です。
MySurfaceView.java (SurfaceView) のみを改造します。


これで画面を回転するたびにToastが表示されるようになりました。
エミュレーターなら左のCtrl+F12で検証できます。

2,SurfaceViewクラスをActivityクラスのインナークラスにして、ActivityクラスのgetApplicationContext()を使う

2つめの方法はMain.java (Activity) のみを改造します。
Activityクラスの内部にSurfaceViewクラスを定義します。


この改造も動作は1と同じです。
この方法はSurfaceViewクラスからActivityクラスのメンバーにアクセスできます。
ただし、SurfaceViewを他のActivityから起動することが難しくなります。

関連ブログ

[Android] Toastをcancelするには

キーワード
Toast Activity SurfaceView getApplicationContext() onSizeChanged

以上、参考になれば幸いです。

SurfaceViewにToastを表示する「Eye元気!/Vigorous eyes!」公開中です!

0 件のコメント:

コメントを投稿