非常好,这一段日志已经非常关键了 ✅ 我来帮你逐步分析为什么 Launcher3 的「从下往上拉」(AllApps 动画) 仍然未显示全屏窗口。
你的日志关键线索:
notifyUpdateLayoutParams(TaskbarActivityContext.java:1536)
onTaskbarOrBubblebarWindowHeightOrInsetsChanged(TaskbarInsetsController.kt:186)再结合你之前的问题(“检查 DragLayer 的 insets”),说明:
你的 Launcher 并没有正确处理 系统 Insets(窗口边距) 的变化。
也就是说:
AllAppsContainerView) 被限制在可用区域之内,不是全屏显示。
这类现象在 Android 12+(尤其是 13~15)常由以下几个问题引起:
原因类型 | 说明 |
|---|---|
① Insets 计算不对 | Launcher 未调用 setSystemUiVisibility() 或 WindowInsetsController 关闭系统栏适配。 |
② DragLayer 没有处理 Insets | onApplyWindowInsets() 未传递 Insets 给子视图。 |
③ 状态栏未隐藏 | Launcher 没有调用 getWindow().getDecorView().setSystemUiVisibility() 设置全屏标志。 |
④ Taskbar 控制器阻挡 | Android 12L 之后的 TaskbarActivityContext 动态计算窗口高度时,会限制 Launcher 的可绘制区域。 |
从你的日志看:
notifyUpdateLayoutParams -> onTaskbarOrBubblebarWindowHeightOrInsetsChanged就是属于 第④种:Taskbar 限制了可用窗口区域。 TaskbarInsetsController 自动计算出一个“有效高度”,防止 Launcher 内容覆盖系统栏,但它导致 AllApps 没法全屏。
类名 | 作用 |
|---|---|
QuickstepLauncher.java | 主 Activity,管理状态、窗口模式。 |
InsetsController.java | 管理系统 Insets(状态栏、导航栏等)。 |
TaskbarActivityContext.java | 管理桌面底部任务栏窗口,控制可见区域。 |
DragLayer.java | 根布局,负责 Insets 应用。 |
可以从下面几个函数入手调试:
quickstep/taskbar/ 下)
fun onTaskbarOrBubblebarWindowHeightOrInsetsChanged() { Log.d("TaskbarInsetsController", "Insets changed, updating layout...") }
这三个地方能看到是否有 Insets 被改小(例如 bottom=120dp)从而压缩了 Launcher 显示高度。
你可以在 QuickstepLauncher.java 的 onResume() 或 onStart() 中,添加如下调试代码:
@Override
protected void onResume() {
super.onResume();
// 强制全屏模式(隐藏状态栏 + 导航栏)
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}如果这样之后「AllApps 可以全屏显示」,说明问题确实是 Insets 没处理好。
updateInsets() 里,强制返回 Insets.NONE,测试 Launcher 是否恢复全屏。
我可以帮你直接指出 Launcher3 的 onInsetsChanged() 所在函数位置(确切行号),
你方便告诉我 Android 版本(例如 Android 14 还是 15),以及 Launcher3 的具体路径(例如 vendor/mediatek/proprietary/packages/apps/Launcher3/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。