天天看點

【Android】輕按兩下傳回鍵,退出android應用程式 輕按兩下兩次退出程式提示功能 三種實作方法...

作者:程式員小冰

微網誌:http://weibo.com/mcxiaobing

【Android】輕按兩下傳回鍵,退出android應用程式 輕按兩下兩次退出程式提示功能 三種實作方法

最下面有項目源代碼下載下傳位址。當然,還是希望大家掌握這個小功能。

package davidsystemapp.com.davidsystemapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;

import java.util.Timer;
import java.util.TimerTask;

/**
 * @author :程式員小冰
 *
 * @新浪微網誌 :http://weibo.com/mcxiaobing
 *
 *
 */

public class MainActivity extends AppCompatActivity {
    private Toast toast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toast = Toast.makeText(getApplicationContext(), "再按一次退出程式", Toast.LENGTH_SHORT);
    }


    /**
     * 輕按兩下兩次退出程式提示  第一種方式
     */
   /* boolean isState = true;//設定輕按兩下退出的變量

    public void onBackPressed() {
        if (isState) { //isState初始值為true
            isState = false;
            Toast.makeText(this, "再按一次退出程式", Toast.LENGTH_SHORT).show();
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    isState = true;
                }
            }, 2000);
        } else {
            finish();
        }
    }*/

    /**
     * 輕按兩下兩次退出程式提示  第二種方式
     */

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {

            quitToast();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    private void quitToast() {
        if (null == toast.getView().getParent()) {
            toast.show();
        } else {
            finish();
//            System.exit(0);
        }
    }

    /**
     * 輕按兩下兩次退出程式提示  第三種方式
     * <p/>
     * https://github.com
     */
    // 1.on..2.開發者實作 3.系統調用
    // 條件 :點選實體鍵盤或者軟體盤
    // int keyCode按鍵編号
  /*  long[] times = new long[2];

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // ① 找出回調函數
            // ② 點選時間 time1 time2
            // ③ 時間 間隔 <2000 退出
            // ④ 提示再點一次
            times[0] = times[1];
            times[1] = System.currentTimeMillis();
            if (times[1] - times[0] < 2000) {
                finish();
            } else {
                Toast.makeText(getBaseContext(), "再點一次退出", Toast.LENGTH_SHORT).show();
            }
            return true;// 消費事件
        }

        return super.onKeyDown(keyCode, event);
    }*/

}