よくある Press back again to exit なToastを再現してみる
現在携わっている業務アプリでは原則 onBackPressed をフックしてダイアログでの終了確認を行うようにしています。 が、終了確認ダイアログのNegativeButtonを毎度毎度押したくないので、よくある(?)あの「終了するにはもう一度押してください」というToastを再現してみました。
コード
package com.example.finishingconfirmsoftly; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends AppCompatActivity { static final long SHORT_DURATION_TIMEOUT = 4000; static final long LONG_DURATION_TIMEOUT = 7000; boolean doubleBackToExitPressedOnce = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onBackPressed() { if (doubleBackToExitPressedOnce) { super.onBackPressed(); return; } this.doubleBackToExitPressedOnce = true; Toast doubleBackToExit = Toast.makeText(this, "Press back again to exit", Toast.LENGTH_SHORT); doubleBackToExit.show(); new Handler().postDelayed(new Runnable() { @Override public void run() { doubleBackToExitPressedOnce = false; } }, (doubleBackToExit.getDuration() == Toast.LENGTH_SHORT ? SHORT_DURATION_TIMEOUT : LONG_DURATION_TIMEOUT) / 2); } }
まだ汎用化してないので絶妙に汚いですが :bow:
見た目
その他
参考:
android.widget.Toast
のソースコード