Android 中點擊返回鍵彈出“在按一次退出程序”的做法


        在很多應用中都有這種做法,連續點擊兩次才退出程序,目的是為了防止用戶不小心點擊到了返回鍵而退出程序了,添加了一次用戶確認的過程。

        其實做法很簡單,只需要做一個延時的消息處理就可以了。

   首先在我們在一個Activity中添加一個按鈕,連續兩次點擊按鈕時退出,連續兩次點擊返回鍵時也退出程序。

     

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:gravity="bottom|right" >
 7     
 8 
 9     <Button 
10         android:id="@+id/exit"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:text="退出應用">
14         
15     </Button>
16 </LinearLayout>

 

    在代碼中點擊按鈕時將標志位置為true,如果在兩秒內點擊,因為標致位為true,所以會退出應用,同時做一個延時2秒的消息處理,兩秒后將標志位還原,就意味着兩秒后點擊和剛開始點擊是一樣的效果。

    

 1 package com.alex.test;
 2 
 3 import java.util.Timer;
 4 import java.util.TimerTask;
 5 
 6 import android.app.Activity;
 7 import android.os.Bundle;
 8 import android.view.KeyEvent;
 9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12 import android.widget.Toast;
13 
14 public class ExitTest extends Activity implements OnClickListener {
15 
16     private Button mExitBtn;
17     private static boolean isExit = false;
18     
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.exit);
23         initView();
24     }
25     
26     private void initView() {
27         mExitBtn = (Button) findViewById(R.id.exit);
28         mExitBtn.setOnClickListener(this);
29     }
30 
31     @Override
32     public void onClick(View v) {
33         switch (v.getId()) {
34         case R.id.exit:
35             exit();
36             break;
37 
38         default:
39             break;
40         }
41     }
42     
43     private void exit() {
44         if(!isExit) {
45             isExit = true;
46             Toast.makeText(this, "在按一次退出程序", Toast.LENGTH_SHORT).show();
47             new Timer().schedule(new TimerTask() {
48                 
49                 @Override
50                 public void run() {
51                     isExit = false;
52                 }
53             }, 2000);
54         } else {
55             finish();
56         }
57     }
58     
59     @Override
60     public boolean onKeyDown(int keyCode, KeyEvent event) {
61         if(keyCode == KeyEvent.KEYCODE_BACK) {
62             exit();
63         }
64         return false;
65     }
66 }

    點擊返回鍵和點擊按鈕都會看到在按一次退出程序的toast,在兩秒內在點一次程序會退出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM