From df8300727f008c0b5ccafe604331668a2b60d6f7 Mon Sep 17 00:00:00 2001 From: shawnlin Date: Fri, 1 Apr 2022 12:01:22 +0800 Subject: [PATCH] [DO NOT MERGE] Fixed status bar glitch for apps that access internal res In 12L, to support mulit-display devices, we changed the way to get the status bar height by adding an API to calculate instead of directly reading the resource of status_bar_height. However, some apps still using Resources.getIdentify() to get this internal resources dimen as status bar height to layout their UI which cause status bar glitch in their app. For compatibility purpose: 1. Create a new dimen res status_bar_height_default which will be used by framework to determine the status bar heigth 2. For status_bar_height - Set the value to the size which already consider the cutout size for defualt display as before so that it won't breaking existing app. - It is only used for apps using Resources.getIdentifier() Bug: 216782082 Test: verified on the apps with such issue. Change-Id: I306efa187ffa69223c06fd248cfe57d183f96c59 Merged-In: I306efa187ffa69223c06fd248cfe57d183f96c59 --- core/java/com/android/internal/policy/SystemBarUtils.java | 2 +- core/res/res/values-land/dimens.xml | 2 ++ core/res/res/values/dimens.xml | 7 +++++-- core/res/res/values/symbols.xml | 2 ++ .../res/values/config.xml | 3 +++ .../res/values/config.xml | 3 +++ .../res/values/config.xml | 3 +++ .../res/values/config.xml | 3 +++ .../res/values/config.xml | 3 +++ .../res/values/config.xml | 6 ++++++ .../res/values/config.xml | 3 +++ packages/overlays/NoCutoutOverlay/res/values/config.xml | 3 +++ 12 files changed, 37 insertions(+), 3 deletions(-) diff --git a/core/java/com/android/internal/policy/SystemBarUtils.java b/core/java/com/android/internal/policy/SystemBarUtils.java index 6bf1333097f70..5358b96a0f974 100644 --- a/core/java/com/android/internal/policy/SystemBarUtils.java +++ b/core/java/com/android/internal/policy/SystemBarUtils.java @@ -43,7 +43,7 @@ public final class SystemBarUtils { * Gets the status bar height with a specific display cutout. */ public static int getStatusBarHeight(Resources res, DisplayCutout cutout) { - final int defaultSize = res.getDimensionPixelSize(R.dimen.status_bar_height); + final int defaultSize = res.getDimensionPixelSize(R.dimen.status_bar_height_default); final int safeInsetTop = cutout == null ? 0 : cutout.getSafeInsetTop(); final int waterfallInsetTop = cutout == null ? 0 : cutout.getWaterfallInsets().top; // The status bar height should be: diff --git a/core/res/res/values-land/dimens.xml b/core/res/res/values-land/dimens.xml index f1e5888d61b91..ca549aeba1f5a 100644 --- a/core/res/res/values-land/dimens.xml +++ b/core/res/res/values-land/dimens.xml @@ -27,6 +27,8 @@ 2dip 72dp + + @dimen/status_bar_height_landscape 48dp diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index f331f1ab720f5..cafebcec454e0 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -39,14 +39,17 @@ 2dp + + 24dp - 24dp + @dimen/status_bar_height_portrait - @dimen/status_bar_height + 24dp diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 87a75da31850c..af8472f9a90a4 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -4492,4 +4492,6 @@ + + diff --git a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/config.xml index c340432b9b8c7..67d405d1e01e2 100644 --- a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/config.xml +++ b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values/config.xml @@ -44,6 +44,9 @@ --> true + + 48dp + 28dp diff --git a/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values/config.xml index 928d9dfa3ce10..e08c32fc4d4b0 100644 --- a/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values/config.xml +++ b/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values/config.xml @@ -56,6 +56,9 @@ --> true + + 48dp + 28dp diff --git a/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/config.xml index 62f0535a1746c..68916cc3494cf 100644 --- a/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/config.xml +++ b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/config.xml @@ -48,6 +48,9 @@ --> true + + 136px + 28dp diff --git a/packages/overlays/DisplayCutoutEmulationNarrowOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationNarrowOverlay/res/values/config.xml index a9f8b4bc63296..605059b27f37b 100644 --- a/packages/overlays/DisplayCutoutEmulationNarrowOverlay/res/values/config.xml +++ b/packages/overlays/DisplayCutoutEmulationNarrowOverlay/res/values/config.xml @@ -47,6 +47,9 @@ --> true + + 48dp + 28dp diff --git a/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values/config.xml index be7d0e48fa3f7..370d730196691 100644 --- a/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values/config.xml +++ b/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values/config.xml @@ -47,6 +47,9 @@ --> true + + 48dp + 28dp diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/config.xml index cc51ebee270cb..98779f0b3bc1e 100644 --- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/config.xml +++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/config.xml @@ -19,6 +19,12 @@ + + 28dp + + 48dp + 20dp 0dp 20dp diff --git a/packages/overlays/DisplayCutoutEmulationWideOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationWideOverlay/res/values/config.xml index 78cc7e04c7a03..176f1dc46b0cc 100644 --- a/packages/overlays/DisplayCutoutEmulationWideOverlay/res/values/config.xml +++ b/packages/overlays/DisplayCutoutEmulationWideOverlay/res/values/config.xml @@ -47,6 +47,9 @@ --> true + + 48dp + 28dp diff --git a/packages/overlays/NoCutoutOverlay/res/values/config.xml b/packages/overlays/NoCutoutOverlay/res/values/config.xml index 84b91b85350dc..ed0340b112297 100644 --- a/packages/overlays/NoCutoutOverlay/res/values/config.xml +++ b/packages/overlays/NoCutoutOverlay/res/values/config.xml @@ -25,4 +25,7 @@ by shrinking the display such that it does not overlap the cutout area. --> true + + 28dp + 28dp