Android中OnkeyDown()和OnBackPressed()
在Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。
1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复Toast.makeText(ml78.this,"返回键Back键测试",1).show();return true;}return super.onKeyDown(keyCode, event);
}
而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下:
@Override
public void onBackPressed() {// 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdkreturn;
}
同时还有一种情况,就是在以前开发的程序中使用的是onKeyDown方法,但是后续版本为了兼容OnBackPressed方法。就需要两者之间进行嵌套。具体的方法如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {// 是否触发按键为back键if (keyCode == KeyEvent.KEYCODE_BACK) {onBackPressed();return true;} else {// 如果不是back键正常响应return super.onKeyDown(keyCode, event);}
}
利用时间差方法完成两次返回键退出,防止误操作。
// 退出时间
private long currentBackPressedTime = 0;// 退出间隔
private static finalint BACK_PRESSED_INTERVAL = 2000;//重写onBackPressed()方法,继承自退出的方法
@Override
publicvoid onBackPressed() {// 判断时间间隔if (System.currentTimeMillis()- currentBackPressedTime > BACK_PRESSED_INTERVAL) {currentBackPressedTime = System.currentTimeMillis();Toast.makeText(this, "再按一次返回键退出程序", Toast.LENGTH_SHORT).show();} else {// 退出finish();}
}
Android中OnkeyDown()和OnBackPressed()相关推荐
- Android中Finish和OnBackPressed、OnDestroy的区别
开发的过程中,常常见到finish()和onBackPressed()以及ondestory好像都能关掉Activity.自己抽空总结一下,首先看源码,源码基于'androidx.appcompat: ...
- Android 中onKeyDown()方法使用详解
博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
- android全局监听onkeydown,Android中的几个onTouch()事件、onKeyDown监听返回键无效
Android中的几个onTouch()事件.onKeyDown监听返回键无效 一:Android中的几个onTouch()事件 继承SimpleOnGestureListener,HahaGestu ...
- android webview详情,Android中的WebView详细介绍
Android中WebView的详细解释: 1. 概念: WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页. 2. 使用方法: (1).实例化 ...
- android sdcard 不存在,在android中显示sdcard上不存在的文件的提醒
以下代码可正常运行,并播放sd卡上的音乐文件. 我想在sdcard上不存在音乐文件("不存在的音乐文件")时显示警报. 我该写些什么?在android中显示sdcard上不存在的文 ...
- Android中使用广播机制退出多个Activity
谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多. 在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法. ...
- android 退出多个activity,Android 中 退出多个activity的经典方法
1.使用list集合方式 用list保存activity实例,然后逐一干掉 import java.util.linkedlist; import java.util.list; import and ...
- 掌握Android中的进程和线程
进程和线程是现代网络操作系统的核心概念.Android作为一种优秀的.承袭Linux的移动操作系统,其进程和线程的概念是开发者和安全工作人员需要深入了解的问题.本文将详细介绍Android中的进程.线 ...
- Android 中opengl es灯光效果实例
一.还是要准备一张图片,放在res/drawable中 二.灯光效果代码: /*** 设置灯光*///设置环境光gl.glLightfv(GL10.GL_LIGHT1, GL10.GL_AMBIENT ...
最新文章
- C++ string流
- hive load data inpath 空目录_走近大数据之Hive进阶(一、Hive数据的导入)
- Console-算法[for,if]-(大马-小马-马驹托砖)
- ICCV 2019 | 从多视角RGB图像生成三维网格模型Pixel2Mesh++
- 计算机Java程序设计标准讲义
- [译】Redux入门教程(一)
- cmd sc命令进行服务操作
- Marquee无间隙滚动(二)
- springmvc工作流程_springMVC工作原理及流程详细讲解
- 【FinE】隐含波动率
- angular烂笔头
- 转:如何做好团队复盘?3大阶段、9个步骤
- 微信小程序 延时执行 设置固定时间间隔
- 【评测】粪便基因组 DNA 提取试剂盒(柱膜法)使用报告
- 使用IText组件在PDF文档上绘制椭圆形印章的算法分析及代码分享
- jmeter 压力测试各种值的意思
- C#根据当前时间获取周,月,季度,年度等时间段的起止时间
- HTML5 Canvas可拖动的弹性大树摇摆动画
- wincc脚本打印斑马打印机条码,斑马打印机接口
- 小程序x钉钉内网穿透(windows) 步骤
热门文章
- Kylin 之对大数据量的多维分析
- 命令创建.net core3.0 web应用详解(超详细教程)
- 个人总结学 iOS 开发的15条经验
- 工欲善其事,必先利其器,程序员都在用什么工具?
- LeetCode467. Unique Substrings in Wraparound String
- 一级建造师(石油化工)考试系统_金桥考试虫 v2.0 官方
- 如何用计算机逻辑描述,第一章 计算机底层逻辑之人有两项绝技
- 用PowerShell批量删除未部署的wsp包
- 达人评测 r7 7735hs和r7 6800hs选哪个好? r77735hs和6800hs对比
- ubuntu 热键设置_分配热键以在Ubuntu中打开终端窗口