view-activity跟控件在onkey事件上的传递关系
2024-08-30 00:26:41
android 中Activity跟View对于键盘的监听,主要有以下几个方法
//按键按下
public boolean onKeyDown(int keyCode, KeyEvent event) {}
//按键弹起
public boolean onKeyUp(int keyCode, KeyEvent event) {}
//常按
public boolean onKeyLongPress(int keyCode, KeyEvent event) {}
我们今天先看的就是按下、弹起两个事件,在activity跟view两者之间的传递关系。
我们先看如下的测试代码
首先是自定义view,重写了onkeyDown 跟onkeyUp两个方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub boolean a = super.onKeyDown(keyCode, event);
Log.e("123", "view_onkeydown|a===" + a);
return a;
} @Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub boolean a = super.onKeyUp(keyCode, event);
Log.e("123", "view_onkeyup|a==" + a);
return a;
}
接下来是在activity中重写了上面两个方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e("123", "activity_onkeydown");
return super.onKeyDown(keyCode, event);
} @Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e("123", "activity_onkeyup");
return super.onKeyUp(keyCode, event);
}
然后我们打下log
1.当焦点不在自定义view上的时候
- ::54.755: E/(): activity_onkeydown
- ::54.951: E/(): activity_onkeyup
- ::55.757: E/(): activity_onkeydown
- ::55.964: E/(): activity_onkeyup
2.当焦点在view上的时候
- ::14.914: E/(): view_onkeydown|a===true
- ::15.043: E/(): view_onkeyup|a==false
- ::15.044: E/(): activity_onkeyup
- ::16.451: E/(): view_onkeydown|a===true
- ::16.614: E/(): view_onkeyup|a==false
- ::16.615: E/(): activity_onkeyup
总结:
从上面的log结果,我们能得到以下两个知识点
1.控件对键盘的监听,只有当控件获得焦点的时候,才能够起效果,activity对控件的监听是一直存在的
2.如果控件获得了焦点,那么监听顺序是,先view,后activity
3.如果view返回为ture,那么activity相应的监听就不会接受到按键事件
最新文章
- http status 301/302 &; java重定向/转发
- jquery取消选择select下拉框
- eclipse tomcat debug启动慢
- 实用图像处理入门 - 2 - Windows平台下编译openCV
- Qt学习思考
- 【BZOJ】1013: [JSOI2008]球形空间产生器sphere
- Cubieboard Linaro 搭建超节能监控平台
- 2.postman安装及使用
- Shell命令-文件及目录操作之mkdir、mv
- 【PHP】最详细PHP从入门到精通(一)——想学习PHP的朋友们福利来了!
- angularJs, ui-grid 设置默认group, 及排序
- RabbitMQ 常用操作
- Android Studio 签名打包
- JFrame绝对布局
- N的阶乘(10000) 51 nod——1057 (大数)
- ubuntu14 16使用libusb过程中遇到的问题及解决方法
- 第一次java实验报告
- OpenShift-OKD3.10基础环境部署
- 关于Storm 中Topology的并发度的理解
- mysql主从复制——双机互为主从
热门文章
- 使用ShareSDK分享-图片的链接
- iOS中关于字符 “&;”的作用?
- POJ 1320 Street Numbers(佩尔方程)
- UI Framework-1: Aura Gesture Recognizer
- LINUX 上源代码安装与配置samba服务,支持从windows上读写LINUX文件。
- centos7 安装 Python netsnmp模块
- mysql更改密码与远程管理
- 洛谷 P1273 有线电视网 && caioj 1109 树形动态规划(TreeDP)4:比赛转播(树上分组背包总结)
- unity 美术注意事项
- iOS framework配置脚本