Android事件处理之物理按键

Android事件处理之物理按键

随着时代的发展与进步,智能机普及率大大提高,甚至是与世隔绝的老大爷大妈都在子女的指导下能够正常地使用智能机。只要使用过智能机的人都不难发现,智能机上的按键分为物理按键和虚拟按键,虚拟按键的使用率大大高于物理按键,现在我们就来谈谈鲜有人关注的物理按键。

一、检测物理按键的方法

  1. 在我们使用虚拟按键之前,一般都会给控件注册监听器。但是当我们在使用物理按键的时候,除了上述的方法,还能够直接在活动页面上检测物理按键,即重写Activity的onKeyDown方法。
 public boolean onKeyDown(int keyCode, KeyEvent event) {
        desc = String.format("%s物理按键的编码是%d", desc, keyCode);
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            desc = String.format("%s, 按键为返回键", desc);
            // 延迟3秒后启动页面关闭任务
            new Handler().postDelayed(mFinish, 3000);
        } else if (keyCode == KeyEvent.KEYCODE_MENU) {
            desc = String.format("%s, 按键为菜单键", desc);
        } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
            desc = String.format("%s, 按键为加大音量键", desc);
        } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
            desc = String.format("%s, 按键为减小音量键", desc);
        }
        desc = desc + "\n";
        tv_result.setText(desc);
        // 返回true表示不再响应系统动作,返回false表示继续响应系统动作
        return true;
    }
  1. 从上面的代码中不难看出,onKeyDown方法拥有按键编码与按键事件KeyEvent两个参数。
  2. onKeyDown方法只可检测4个物理按键事件,即菜单键、返回键、加大音量键和减小音量键,而主页键和任务键则就需要通过广播接收器来监测。

二、onKeyDown与onKey的区别

在使用onKeyDown方法之后,可以发现onKeyDown与onKey的不同之处:

  1. onKeyDown只能在Activity代码中使用,而onKey只要有可注册的控件就能使用。
  2. onKeyDown只能检测物理按键,无法检测输入法按键(如回车键、删除键等),而onKey可同时检测两类按键。
  3. onKeyDown不区分按下与松开两个动作,而onKey区分这两个动作。

三、生活案例延伸

(一)返回键常常会误触

在我们生活中,经常会出现误触返回键而导致退出应用的情况,我就经常在用手机浏览网页的时候不小心触碰到返回键,导致误退出的情况发生,这会影响使用者的心情。那么

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值