在 Android 的 Launcher3 代码中,当你看到「检查 DragLayer 的 insets」这样的描述(例如注释或日志),意思是指:
检查
DragLayer这个最顶层布局(通常是 Launcher UI 的根容器)在系统窗口中被系统留出的边距(insets)情况。
Insets(窗口内边距)是 Android 系统告诉应用:
“有哪一部分屏幕是被系统 UI(状态栏、导航栏、圆角、安全区域等)占用了,应用不要画到那里。”
从 Android 10 (API 29) 开始,Insets 取代了旧的 getSystemWindowInsetTop()、getStableInsetBottom() 等方式。
DragLayer 是 Launcher3 的根布局,包裹了所有界面层级(包括桌面图标、搜索栏、App Drawer、壁纸交互等)。
它负责:
这通常是指:
onApplyWindowInsets());
在 DragLayer.java 或 BaseDragLayer.java 里可以看到类似代码:
@Override
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
mInsets = new Insets(insets);
// 调整子视图布局,使内容不被状态栏或导航栏挡住
requestLayout();
return super.onApplyWindowInsets(insets);
}或者在 QuickstepLauncher.java 的 onInsetsChanged() 回调里:
@Override
public void onInsetsChanged(Insets insets) {
mDragLayer.setInsets(insets);
// 检查 DragLayer 的 insets 是否正确生效
}“检查 DragLayer 的 insets” → 就是确认 Launcher 的根布局是否正确感知系统窗口边界,防止界面被遮挡或错位。
如果你是因为修改状态栏或全屏相关逻辑(比如 DISABLE_EXPAND、FLAG_LAYOUT_NO_LIMITS)时看到这句话,那说明 Launcher 现在需要重新调整 DragLayer 的 Insets 适配逻辑。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。