[Android]自定义锁屏界面
@Author GQ 2016年10月23日
最新项目有一个需要锁屏显示的需求,类似qq锁屏弹框消息,于是上网搜寻相关资源,最后总结了一下下面两种方式.
测试机使用的是5.0的系统.
效果图
方式一:
方式二:
1. AndroidStudio使用
详情参照demo
2. 使用
- 方式一:
//当消息到达或者其他情况,启动锁屏服务,当点击home键唤醒屏幕时,会优先启动一个Activity显示锁屏
//可显示在锁屏的上层界面
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
//可以使back键,音量加减键失效
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return disableKeycode(keyCode, event);
}
private boolean disableKeycode(int keyCode, KeyEvent event) {
int key = event.getKeyCode();
switch (key) {
case KeyEvent.KEYCODE_BACK:
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
return true;
}
return super.onKeyDown(keyCode, event);
}
- 方式二
//基本原理也是启动服务,当点击home键唤醒屏幕时,会创建一个View显示锁屏
//禁用系统锁屏
mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
mKeyguardLock = mKeyguardManager.newKeyguardLock("my_lockscreen");
mKeyguardLock.disableKeyguard();
- 区别
方式一: 启动Activity作为锁屏,可以制作显示在系统锁屏上层的锁屏,缺点是无法屏蔽home按键;
方式二: 同理以View作为锁屏,只能禁用系统锁屏使其在最上层,或者先解锁系统,再显示自定义View锁屏,优点是可以屏蔽home按键,执行需要的自定义操作;
3. Demo下载
方式一 :下载地址http://download.csdn.net/detail/baidu_25797177/9661551
方式二 :下载地址http://download.csdn.net/detail/baidu_25797177/9661557