欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現(xiàn)長按back鍵退出應(yīng)用程序的方法

 更新時間:2015年05月28日 09:59:53   作者:海 子  
這篇文章主要介紹了Android實現(xiàn)長按back鍵退出應(yīng)用程序的方法,實例分析了Android按鈕事件的操作技巧,需要的朋友可以參考下

本文實例講述了Android實現(xiàn)長按back鍵退出應(yīng)用程序的方法。分享給大家供大家參考。具體分析如下:

最近在做一個Android上的應(yīng)用,碰到一個問題就是如何實現(xiàn)長按back鍵退出應(yīng)用程序。在網(wǎng)上查找了很多資料,發(fā)現(xiàn)幾乎沒有這樣的實現(xiàn),大部分在處理時是雙擊back鍵來退出應(yīng)用程序。參考了一下雙擊back鍵退出應(yīng)用程序的代碼,網(wǎng)上主流的一種方法是下面這種方法,實現(xiàn)起來比較簡單:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
  if (keyCode == KeyEvent.KEYCODE_BACK) 
  {
   if ((System.currentTimeMillis() - mExitTime) > 2000) 
   {
    mHelperUtils.showToast(mContext, R.string.exit_content);
    mExitTime = System.currentTimeMillis();
   }
   else 
   {
    finish();
   }
   return true;
  }
  return super.onKeyDown(keyCode, event);
}

從上面的代碼可以看出,采用的思路就是連續(xù)兩次點擊back鍵的時間間隔在2s以內(nèi),則認(rèn)為是雙擊,從而退出程序。

因此,借鑒上面的思路,我的最初想法是:可以重寫onKeyDown方法和onKeyUp方法,計算這執(zhí)行這兩個方法之間的時間間隔,如果大于2s,則認(rèn)為是長按,從而退出程序;否則,則執(zhí)行back鍵原有的響應(yīng)。按照這個思路:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
 if (keyCode == KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0) 
 { 
  start=System.currentTimeMillis(); 
  Log.e("start",String.valueOf(start));
  return false; 
 } 
 return super.onKeyDown(keyCode, event);
} 
public boolean onKeyUp(int keyCode,KeyEvent event)
{
 if (keyCode == KeyEvent.KEYCODE_BACK &&event.getRepeatCount()==0) 
 { 
  end=System.currentTimeMillis(); 
  Log.e("end",String.valueOf(end));
  if(start!=-1&&(end-start)>2000)
  {
  AlertDialog.Builder builder = new Builder(MainActivity.this);
  builder.setMessage("確認(rèn)退出嗎?");
  builder.setTitle("提示");
  builder.setPositiveButton("確認(rèn)",new DialogInterface.OnClickListener()
  {
   public void onClick(DialogInterface dialog,int which)
   {
   dialog.dismiss();
   MainActivity.this.finish();
   System.exit(0);
   }
  });
  builder.setNegativeButton("取消",new DialogInterface.OnClickListener()
  {
   public void onClick(DialogInterface dialog,int which) 
   {
   dialog.dismiss();
   }
  });
  builder.create().show();
  return true;
  }
  else
  {
  return super.onKeyUp(keyCode, event);
  }
 }
 return super.onKeyUp(keyCode, event);
}

然而,這樣能夠?qū)崿F(xiàn)長按back鍵退出程序,但是非長按back鍵的時候,點擊back則失效了,查找了很多Android 按鍵事件分發(fā)和處理機制方面的資料,還是沒弄清楚原因(后面有時間再研究)。于是考慮換一種思路去處理,考慮去重寫Activity中的dispatchKeyEvent方法。

public boolean dispatchKeyEvent(KeyEvent event)
{
 int keyCode=event.getKeyCode();
 //Log.e("start",String.valueOf(start));
 switch(keyCode)
 {
  case KeyEvent.KEYCODE_BACK:
  if(event.isLongPress())
  //這句很重要,判斷事件是否是長按事件
  {
  AlertDialog.Builder builder = new Builder(MainActivity.this);
  builder.setMessage("確認(rèn)退出嗎?");
  builder.setTitle("提示");
  builder.setPositiveButton("確認(rèn)",new DialogInterface.OnClickListener()
  {
   public void onClick(DialogInterface dialog,int which)
   {
   dialog.dismiss();
   MainActivity.this.finish();
   System.exit(0);
   }
  });
  builder.setNegativeButton("取消",new DialogInterface.OnClickListener() 
  {
   public void onClick(DialogInterface dialog,int which) 
   {
   dialog.dismiss();
   }
  });
  builder.create().show();
  return true;
  }
  return super.dispatchKeyEvent(event);
  //如果不是長按,則調(diào)用原有方法,執(zhí)行按下back鍵應(yīng)有的處理
  default:
  break;
 }
 return super.dispatchKeyEvent(event);
}

最后通過重寫dispatchKeyEvent方法實現(xiàn)了長按back鍵退出程序,而且沒有屏蔽掉原有的非長按back鍵功能。

希望本文所述對大家的Android程序設(shè)計有所幫助。

相關(guān)文章

  • Android的webview支持HTML5的離線應(yīng)用功能詳細(xì)配置

    Android的webview支持HTML5的離線應(yīng)用功能詳細(xì)配置

    HTML5的離線應(yīng)用功能可以使得WebApp即使在網(wǎng)絡(luò)斷開的情況下仍能正常使用這是個非常有用的功能,但如何使Webivew支持HTML5離線應(yīng)用功能呢,需要的朋友可以參考下
    2012-12-12
  • android實現(xiàn)微信朋友圈發(fā)布動態(tài)功能

    android實現(xiàn)微信朋友圈發(fā)布動態(tài)功能

    這篇文章主要為大家詳細(xì)介紹了android實現(xiàn)微信朋友圈發(fā)布動態(tài)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Android實現(xiàn)類似iOS分欄控制器

    Android實現(xiàn)類似iOS分欄控制器

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)類似iOS分欄控制器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 強制Android應(yīng)用使用某個Locale的方法

    強制Android應(yīng)用使用某個Locale的方法

    這篇文章主要介紹了強制Android應(yīng)用使用某個Locale的方法,涉及Android基于Locale進(jìn)行語言設(shè)置的相關(guān)技巧,需要的朋友可以參考下
    2015-10-10
  • Android自定義View實現(xiàn)跟隨手指移動的小兔子

    Android自定義View實現(xiàn)跟隨手指移動的小兔子

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實現(xiàn)跟隨手指移動的小兔子,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Android中自定義進(jìn)度條詳解

    Android中自定義進(jìn)度條詳解

    這篇文章主要介紹了Android中自定義進(jìn)度條詳解,本文講解了變換進(jìn)度條前背景、縱向進(jìn)度條、弧形bar等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Android對話框AlertDialog與DatePickerDialog及TimePickerDialog使用詳解

    Android對話框AlertDialog與DatePickerDialog及TimePickerDialog使用詳解

    這篇文章主要介紹了Android對話框中的提醒對話框AlertDialog、日期對話框DatePickerDialog、時間對話框TimePickerDialog使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • Android常用進(jìn)度條效果分享

    Android常用進(jìn)度條效果分享

    這篇文章主要為大家分享了Android常用進(jìn)度條效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android學(xué)習(xí)教程之懸浮窗菜單制作(9)

    Android學(xué)習(xí)教程之懸浮窗菜單制作(9)

    這篇文章主要為大家詳細(xì)介紹了Android學(xué)習(xí)教程之懸浮窗菜單制作方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android強制下線功能實現(xiàn)的代碼示例

    Android強制下線功能實現(xiàn)的代碼示例

    本篇文章主要介紹了Android強制下線功能實現(xiàn)的代碼示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論