バックキーを2回押して終了させるという最近よく見る機能を自分のゲームに実装してみました。
実装方法は探せば色々ありますが、Toastが表示されているかされてないかをToastに直接尋ねて判断するこの方法が一番シンプルで安全だと思います。
//変数宣言
private Toast mToast;
//--終了処理を行いたいイベント内で行う処理
//バックキーが押された時の処理(KeyEventの条件判断等は略)
if ( mToast == null || !mToast.getView().isShown() ) {
mToast = Toast.makeText( this, "もう一度押すと終了します", Toast.LENGTH_SHORT );
mToast.show();
return;
}
//終了処理
finish();
//--
ソースの解説をしますと、バックキーが押された時に表示される「もう一度押すと終了します」と書かれたToastのインスタンスを保持しておき、
そのToastのgetView().isShown()メソッドを用いてToastが現在表示されているかを判断し、
表示されている場合はreturnせずに終了処理を行うという流れです。
ToastのgetView().isShown()メソッドはToastが表示されている時はtrue、されていない時はfalseを返します。
Toast.makeText()の第一引数のthisはToastを表示させたいActivityを渡してください。
第三引数はToastが表示される時間の長さを指定します。
LENGTH_SHORTとLENGTH_LONGがありますが、LENGTH_LONGだと長過ぎるのでLENGTH_SHORTをオススメします。
また、上のソースは戻り値やバックキーを押したかどうかの条件判断等を省略しています。
特に変わった処理をしていなければ、ActivityのonBackPressed()メソッド内に貼り付けるのが一番簡単だと思います。
[2015/03/21:修正]文章とタイトルを少し修正。
[2015/11/23:修正]説明を丁寧にしました。
http://uromuro.dou-jin.com/Entry/17/【Android】バックキー2回押しでアプリを終了させる
[0回]
PR