SystemUI中新添加Window(屏保)与导航栏交互出现的常见问题

在Android项目中,添加屏保功能时遇到屏保隐藏导航栏和无锁屏状态下可操作导航栏的问题。分析发现是由于Window层级和导航栏控制逻辑导致。解决方案包括在屏保显示/隐藏时调整导航栏的可见性和滑出控制,以及添加特殊属性以填充屏保窗口背景。同时,了解了Window层级、锁屏状态下的导航栏处理和PhoneWindowManager的监听处理。
摘要由CSDN通过智能技术生成

不积跬步无以至千里    

最近项目项目里添加了屏保功能,屏保实际为锁屏或者屏幕休眠,出现的一个Window,此用以显示时间与通知的重要信息,并具有省电模式的一个界面。

这一块的实现主要是通过添加一个Window,此Window的层级位于锁屏之上,但是又要低于一些系统重要的弹窗Window(比如调节音量、PowerUI重启的等等),因此此处挑选了Window层级为 WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL,但是其层级是低于导航栏的等级的 WindowManager.LayoutParams.TYPE_NAVIGATION_BAR,因此经过测试提出如下两个bug:

1、Settings设置了导航栏的不可隐藏,但是现在发现经过锁屏操作之后,发现导航栏被隐藏了。

2、发现在无锁屏状态时,并开启屏保功能,唤醒屏保,发现屏保可以上滑出导航栏并能操作导航栏的按钮。

bug图如下:

解决问题流程

一、原因分析

发现原有代码在控制屏保显示的时候调用了remove导航栏的方法,但是在解锁之后并未重新调用show导航栏的方法,因此导

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SystemUI专属小号

如果对您有帮助是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值