在Android中实现监听 返回键,主键,菜单键
一、监听 返回键 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中实现监听 返回键,主键,菜单键相关推荐
- 【Android】ActionBar监听返回按钮
android生成的Activity默认是不显示ActionBar的,如果有需要可以把它打开,并且设置主副标题.返回键键等,重写onOptionsItemSelected才能点击返回键返回上一层 pu ...
- Android中如何监听手机GPS打开状态
位置坐标监听.GPS卫星状态监听在Android应用中常见,我们是否一进入应用就注册相应的监听? 答案当然不是的.比如,手机的GPS没有打开,而我们注册了监听,那有什么用呢? 所以,我们应该实时监听手 ...
- android 中如何监听按键的长按事件
1,key -- 实体按键, 现在手机物理按键越来越少 常见的有 KEYCODE_VOLUME_DOWN/UP KEYCODE_POWER KEYCODE_BACK KEYCODE_HOME KEYC ...
- Android中如何监听手机电话状态
问题描述:当应用中需要对来电这一状态进行处理时(例如来电时显示来电话号码归属地等),就需要对电话状态进行监听. 解决步骤:1.对电话状态的监听最好是放在服务中,因为有一种服务的启动方式可以不依赖于ac ...
- Fragment中设置监听返回键的功能
首先创建一个抽象类BackHandledFragment,该类有一个抽象方法onBackPressed(),所有BackHandledFragment的子类在onBackPressed方法中处理各自对 ...
- android全局监听onkeydown,Android中的几个onTouch()事件、onKeyDown监听返回键无效
Android中的几个onTouch()事件.onKeyDown监听返回键无效 一:Android中的几个onTouch()事件 继承SimpleOnGestureListener,HahaGestu ...
- android设置返回按钮无效,Android onKeyDown监听返回键无效的解决办法
Android onKeyDown监听返回键无效的解决办法 当我们的Activity继承了TabActivity,在该类中重写onKeyDown是监听不到返回键的, 具体解决方法如下: 重写dispa ...
- Android监听返回键、Home键+再按一次返回键退出应用
Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME [java] view plaincopy @Override pub ...
- Android下监听返回键、home键、任务键
1.监听返回键 @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYC ...
最新文章
- Laravel 5.5 的错误异常处理机制以及应用实例
- Java中return结束循环,Java中break、continue、return在for循环中的使用
- C# 9 record 并非简单属性 POCO 的语法糖
- Silverlight --- Behavior技术(三)
- android imagebutton的点击事件,Android 点击ImageButton时有“按下”的效果的实现
- 微信公众号新手运营指南——公众号后台常用功能介绍
- pptswot分析图怎么做_SWOT分析图-PPT模板.pptx
- order by排序的用法
- 如何开会——高效会议八项原则
- 投影幕布必备知识有哪些?
- SAM4E单片机之旅——20、DMAC之使用Multi-buffer进行内存拷贝
- 前端页面嵌入二维码,微信扫出现请点击右上角,选择在浏览器中打开的解决方法
- 商业原画与商业插画的区别
- 思维模型 塔西陀陷阱
- bilibili视频爬取报错
- 硬件SPI控制ST7789V
- android10.0(Q) Settings 添加设置项——动态方式
- js常用对象:点击、双击、onload事件、鼠标相关、onblur事件和onfocus事件等;通过循环给多个元素添加事件、通过addEventListener() 方法 监听事件函数...
- JDK1.7绿色解压版64位
- EXTJS4 页面关闭问题
热门文章
- 统计和生成所有不同的二叉树
- 点云网络的论文理解(四)-点云网络的优化 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
- Python爬虫应用实战案例-jsonpath在爬虫中的应用,爬取照片信息
- Linux疑难杂症解决方案100篇(二十)-万字长文带你读懂正则表达式(建议收藏)
- MATLAB从入门到精通-matlab图像处理标记点追踪识别程序
- 强化学习(十九) AlphaGo Zero强化学习原理
- Python的lambda匿名函数
- 消息队列 策略_消息队列技术点梳理(思维导图版)
- 深度学习100例 | 第32天-GRU模型:算法生成小说
- Java多线程编程那些事:volatile解惑--转