一、监听 返回键 onKeyDown方法和onBackPressed方法

onKeyDown: 是当某个按键被按下是触发。所以也有人在点击返回键的时候去执行该方法来做判断。(该方法只是android 1.0~ android 2.1)代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复Toast.makeText(this,"返回键Back键测试",Toast.LENGTH_SHORT).show();return true;}return super.onKeyDown(keyCode, event);
}

onBackPressed: 在android 2.0开始多出了关于返回键的单独的事件方法,可以在该方法里面执行当点击返回键的时候做什么…所以,后期都是用这个方法比较多,代码如下:

@Override
public void onBackPressed() {// 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdkreturn;
}

如果要考虑版本兼容的话,代码可这么写:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {// 是否触发按键为back键if (keyCode == KeyEvent.KEYCODE_BACK) {onBackPressed();return true;} else {// 如果不是back键正常响应return super.onKeyDown(keyCode, event);}
}

点击两次返回键退出,防止误操作

//重写onKeyDown()方法,继承自退出的方法
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){if((System.currentTimeMillis()-exitTime) > 2000){Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();exitTime = System.currentTimeMillis();} else {finish();System.exit(0);}return true;}return super.onKeyDown(keyCode, event);
}
//重写onBackPressed()方法
//退出时间
privatelongcurrentBackPressedTime= 0;
//退出间隔
privatestaticfinalintBACK_PRESSED_INTERVAL= 2000;
//重写onBackPressed()方法,继承自退出的方法
@Override
public void onBackPressed() {//判断时间间隔if(System.currentTimeMillis()-currentBackPressedTime>BACK_PRESSED_INTERVAL) {currentBackPressedTime= System.currentTimeMillis();Toast.makeText(this,"再按一次返回键退出程序", Toast.LENGTH_SHORT).show();}else{//退出finish();}
}

二、监听 主键(Home键)

监听Home键可以通过onUserLeaveHint()方法来实现,代码如下:

@Override
protected void onUserLeaveHint() {super.onUserLeaveHint();Toast.makeText(this, "onUserLeaveHint", Toast.LENGTH_SHORT).show();
}

三、监听 菜单键

菜单的监听也可以通过onKeyDown()方法来实现,代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_MENU) {Toast.makeText(this, "onkeyDown clicked", Toast.LENGTH_SHORT).show();super.openOptionsMenu(); // 调用这个,就可以弹出菜单}return true; // 最后,一定要做完以后返回 true,或者在弹出菜单后返回true,其他键返回super,让其他键默认
}

onOptionsMenuClosed()方法也可以实现,代码如下:

@Override
public void onOptionsMenuClosed(Menu menu) {super.onOptionsMenuClosed(menu);Toast.makeText(this, "onOptionsMenuClosed clicked", Toast.LENGTH_SHORT).show();
}

在Android中实现监听 返回键,主键,菜单键相关推荐

  1. 【Android】ActionBar监听返回按钮

    android生成的Activity默认是不显示ActionBar的,如果有需要可以把它打开,并且设置主副标题.返回键键等,重写onOptionsItemSelected才能点击返回键返回上一层 pu ...

  2. Android中如何监听手机GPS打开状态

    位置坐标监听.GPS卫星状态监听在Android应用中常见,我们是否一进入应用就注册相应的监听? 答案当然不是的.比如,手机的GPS没有打开,而我们注册了监听,那有什么用呢? 所以,我们应该实时监听手 ...

  3. android 中如何监听按键的长按事件

    1,key -- 实体按键, 现在手机物理按键越来越少 常见的有 KEYCODE_VOLUME_DOWN/UP KEYCODE_POWER KEYCODE_BACK KEYCODE_HOME KEYC ...

  4. Android中如何监听手机电话状态

    问题描述:当应用中需要对来电这一状态进行处理时(例如来电时显示来电话号码归属地等),就需要对电话状态进行监听. 解决步骤:1.对电话状态的监听最好是放在服务中,因为有一种服务的启动方式可以不依赖于ac ...

  5. Fragment中设置监听返回键的功能

    首先创建一个抽象类BackHandledFragment,该类有一个抽象方法onBackPressed(),所有BackHandledFragment的子类在onBackPressed方法中处理各自对 ...

  6. android全局监听onkeydown,Android中的几个onTouch()事件、onKeyDown监听返回键无效

    Android中的几个onTouch()事件.onKeyDown监听返回键无效 一:Android中的几个onTouch()事件 继承SimpleOnGestureListener,HahaGestu ...

  7. android设置返回按钮无效,Android onKeyDown监听返回键无效的解决办法

    Android onKeyDown监听返回键无效的解决办法 当我们的Activity继承了TabActivity,在该类中重写onKeyDown是监听不到返回键的, 具体解决方法如下: 重写dispa ...

  8. Android监听返回键、Home键+再按一次返回键退出应用

    Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME [java] view plaincopy @Override pub ...

  9. Android下监听返回键、home键、任务键

    1.监听返回键 @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYC ...

最新文章

  1. Laravel 5.5 的错误异常处理机制以及应用实例
  2. Java中return结束循环,Java中break、continue、return在for循环中的使用
  3. C# 9 record 并非简单属性 POCO 的语法糖
  4. Silverlight --- Behavior技术(三)
  5. android imagebutton的点击事件,Android 点击ImageButton时有“按下”的效果的实现
  6. 微信公众号新手运营指南——公众号后台常用功能介绍
  7. pptswot分析图怎么做_SWOT分析图-PPT模板.pptx
  8. order by排序的用法
  9. 如何开会——高效会议八项原则
  10. 投影幕布必备知识有哪些?
  11. SAM4E单片机之旅——20、DMAC之使用Multi-buffer进行内存拷贝
  12. 前端页面嵌入二维码,微信扫出现请点击右上角,选择在浏览器中打开的解决方法
  13. 商业原画与商业插画的区别
  14. 思维模型 塔西陀陷阱
  15. bilibili视频爬取报错
  16. 硬件SPI控制ST7789V
  17. android10.0(Q) Settings 添加设置项——动态方式
  18. js常用对象:点击、双击、onload事件、鼠标相关、onblur事件和onfocus事件等;通过循环给多个元素添加事件、通过addEventListener() 方法 监听事件函数...
  19. JDK1.7绿色解压版64位
  20. EXTJS4 页面关闭问题

热门文章

  1. 统计和生成所有不同的二叉树
  2. 点云网络的论文理解(四)-点云网络的优化 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
  3. Python爬虫应用实战案例-jsonpath在爬虫中的应用,爬取照片信息
  4. Linux疑难杂症解决方案100篇(二十)-万字长文带你读懂正则表达式(建议收藏)
  5. MATLAB从入门到精通-matlab图像处理标记点追踪识别程序
  6. 强化学习(十九) AlphaGo Zero强化学习原理
  7. Python的lambda匿名函数
  8. 消息队列 策略_消息队列技术点梳理(思维导图版)
  9. 深度学习100例 | 第32天-GRU模型:算法生成小说
  10. Java多线程编程那些事:volatile解惑--转