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

[Android]自定义锁屏界面

@Author GQ 20161023日  

最新项目有一个需要锁屏显示的需求,类似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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值