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,在两秒内在点一次程序会退出。

你可能感兴趣的:(android)