Android开发

四、理解Android锁屏机制

2019-08-09  本文已影响0人  唔笛plk

一、锁屏页的本质

锁屏界面其实也是一个Activity,只不过在该Activity上,屏蔽了Home键及Back键的响应,只有当用户解锁的时候才可以进入下一个界面,一般是Launcher界面。当然用户解锁的方式可以是滑动解锁,可以是密码解锁,完全在于自己对该锁屏界面的设计,同样可以像市场上很多锁屏软件一样,可以加入一些有用的小玩意儿,比如天气预报、时钟、新闻等,因为这就是一个Activity,就像平时我们设计界面内容一样,理论上可以随意设计,当然也要符合锁屏页的原则,尽量简洁美观易用

二、实现原理

三、技术要点

(1)屏蔽Back键
Back键比较容易屏蔽掉,重写onKeyDown或onBackPressed方法即可,几乎在所有Android版本上都是可以用的(并未亲自测试所有版本,测了几个版本并未遇到无效的情况)。
(2)屏蔽Home键
再来说屏蔽Home键,这个算是一个难点了。其实可以试想一下,如果运行了一个APP,当Back键和Home键被屏蔽掉,那么这个程序是无法退出的,如果再是一个流氓软件,这是多么恶心的用户体验啊!除非你是一个很正规的锁屏软件,否则不建议屏蔽掉Home键。
Android4.0版本之前还是可以找到方法屏蔽Home键的,但是4.0之后则不再允许屏蔽Home键了,或许Google也是从安全性和用户体验的角度考虑,Home键的响应直接在FrameWork层就处理了,而不会再传到application层来处理。当然网上也看到有方法侦听到Home键,但是监听归监听,但你无法屏蔽它。也就是说4.0之后,当按下Home键时,系统默认会响应启动Home页,也就是Launcher桌面,我们在应用层没有办法再屏蔽它。当然你可以修改FrameWork层代码,重新定制,这属于第一种实现方式了,不在此文的探讨范围。

四、具体实现

@Override  
public boolean onKeyDown(int keyCode, KeyEvent event) {  
    if(KeyEvent.KEYCODE_HOME==keyCode){  
        return true;  
    }  
    return super.onKeyDown(keyCode, event);  
}  
@Override  
 public void onAttachedToWindow(){  
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);  
    super.onAttachedToWindow();  
 }  
上一篇下一篇

猜你喜欢

热点阅读