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相应的监听就不会接受到按键事件

最新文章

  1. http status 301/302 & java重定向/转发
  2. jquery取消选择select下拉框
  3. eclipse tomcat debug启动慢
  4. 实用图像处理入门 - 2 - Windows平台下编译openCV
  5. Qt学习思考
  6. 【BZOJ】1013: [JSOI2008]球形空间产生器sphere
  7. Cubieboard Linaro 搭建超节能监控平台
  8. 2.postman安装及使用
  9. Shell命令-文件及目录操作之mkdir、mv
  10. 【PHP】最详细PHP从入门到精通(一)——想学习PHP的朋友们福利来了!
  11. angularJs, ui-grid 设置默认group, 及排序
  12. RabbitMQ 常用操作
  13. Android Studio 签名打包
  14. JFrame绝对布局
  15. N的阶乘(10000) 51 nod——1057 (大数)
  16. ubuntu14 16使用libusb过程中遇到的问题及解决方法
  17. 第一次java实验报告
  18. OpenShift-OKD3.10基础环境部署
  19. 关于Storm 中Topology的并发度的理解
  20. mysql主从复制——双机互为主从

热门文章

  1. 使用ShareSDK分享-图片的链接
  2. iOS中关于字符 “&”的作用?
  3. POJ 1320 Street Numbers(佩尔方程)
  4. UI Framework-1: Aura Gesture Recognizer
  5. LINUX 上源代码安装与配置samba服务,支持从windows上读写LINUX文件。
  6. centos7 安装 Python netsnmp模块
  7. mysql更改密码与远程管理
  8. 洛谷 P1273 有线电视网 && caioj 1109 树形动态规划(TreeDP)4:比赛转播(树上分组背包总结)
  9. unity 美术注意事项
  10. iOS framework配置脚本