[Android]自定义锁屏并屏蔽按键

[Android]自定义锁屏界面

@Author GQ 20161023日  

最新项目有一个需要锁屏显示的需求,类似qq锁屏弹框消息,于是上网搜寻相关资源,最后总结了一下下面两种方式.

测试机使用的是5.0的系统.

效果图

方式一:
[Android]自定义锁屏并屏蔽按键_第1张图片

方式二:
[Android]自定义锁屏并屏蔽按键_第2张图片

  • Android自定义锁屏界面
    • 效果图
    • AndroidStudio使用
    • 使用
    • Demo下载

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

你可能感兴趣的:(安卓)