重写back键

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// 需要处理
//return true;//屏蔽back键(不响应back键)
}

return super.onKeyDown(keyCode, event);
}


-------------
//方法二
activity里有 onBackPressed()方法, 重写即可

重新 home键

默认情况下,重写onKeyDown方法是无法捕捉到HOME键的,原因不太清楚,
不过我想是因为系统也在捕捉HOME键,而且优先级比我们的程序要高.我们可以通过修改窗口类型来达到我们的目的.
首先重写onAttachedToWindow方法:

@Override
public void onAttachedToWindow() {
// TODO Auto-generated method stub
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
//设置窗口类型
}
onAttachedToWindow 在API文档中英文原文解释:
Called when the main window associated with the activity has been
attached to the window manager.在主窗口被关联到被附加到窗口管理器的Activity时调用,
其实说得模糊点应该就是在Activity启动时调用的.加了这个后,在UI上有点小变化,
如果你的Activity不是占满全屏的(AlertDialog样式),默认情况下是会显示Activity下面的窗口的(没有被遮住的部分),
但是加了这个以后,Activity以外的空间是全黑的.
然后就可以在onKeyDown里捕捉到了:


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub

if(keyCode==KeyEvent.KEYCODE_HOME){
System.out.println("按到HOME键");
return false;
}
return super.onKeyDown(keyCode, event);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值