1.前言
在14.0的系统rom定制化os开发中,在系统默认的功能中,在app设置全屏后,会隐藏导航栏和状态栏,页面全屏显示,然后如果底部上滑这时就会显示虚拟
状态栏和导航栏显示几秒钟后会自动消失,由于项目开发的功能需求,要求需要要求通过api来控制全屏时上滑是否显示虚拟导航栏和状态栏,这就要从上滑事件
分析看如何显示虚拟导航栏和状态栏的流程来控制是否显示的实现
2.app全屏时通过系统属性控制上滑是否显示导航栏和状态栏功能实现的核心类
frameworks\base\services\core\java\com\android\server\wm\DisplayPolicy.java
frameworks/base/services/core/java/com/android/server/wm/InsetsControlTarget.java
3.app全屏时通过系统属性控制上滑是否显示导航栏和状态栏功能实现的核心功能分析和实现
在Android系统中,一般的window的是在 DisplayPolicy的layoutWindowLw方法中布局的,而导航栏和状态栏分别是在DisplayPolicy的layoutNavigationBar和layoutStatusBar方法中布局的。
DisplayPolicy 类在 Android 的 SystemUI 中是一个关键组件,用于管理系统 UI 的显示策略。这个类主要负责根据设备的状态(如屏幕是否锁定、设备是否处于手持模式等)和系统的状态(如应用是否处于全屏模式等)来动态调整系统 UI 的可见性。
在 Android 9(及更低版本)中,PhoneWindowManager 类处理了屏幕政策、状态和设置、