不积跬步无以至千里

最近项目项目里添加了屏保功能,屏保实际为锁屏或者屏幕休眠,出现的一个Window,此用以显示时间与通知的重要信息,并具有省电模式的一个界面。
这一块的实现主要是通过添加一个Window,此Window的层级位于锁屏之上,但是又要低于一些系统重要的弹窗Window(比如调节音量、PowerUI重启的等等),因此此处挑选了Window层级为 WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL,但是其层级是低于导航栏的等级的 WindowManager.LayoutParams.TYPE_NAVIGATION_BAR,因此经过测试提出如下两个bug:
1、Settings设置了导航栏的不可隐藏,但是现在发现经过锁屏操作之后,发现导航栏被隐藏了。
2、发现在无锁屏状态时,并开启屏保功能,唤醒屏保,发现屏保可以上滑出导航栏并能操作导航栏的按钮。
bug图如下:

本文主要探讨了在系统UI中新增屏保功能时遇到的导航栏隐藏与交互问题。通过分析代码,找到了解决方案,包括在显示和隐藏屏保时调整导航栏状态,并通过设置特定窗口属性以防止屏保界面显示问题。同时,介绍了如何控制导航栏在屏保界面的滑出行为,加深了对Window层级管理和锁屏状态导航栏处理的理解。
订阅专栏 解锁全文
715





