[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
This commit is contained in:
shawnlin
2022-04-01 12:01:22 +08:00
committed by Shawn Lin
parent b9573bc095
commit df8300727f
12 changed files with 37 additions and 3 deletions

View File

@@ -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: