Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9019422 authored by shawnlin's avatar shawnlin Committed by Shawn Lin
Browse files

[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
parent 8f9b80e5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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:
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@
    <dimen name="password_keyboard_spacebar_vertical_correction">2dip</dimen>
    <dimen name="preference_widget_width">72dp</dimen>

    <!-- Height of the status bar -->
    <dimen name="status_bar_height">@dimen/status_bar_height_landscape</dimen>
    <!-- Height of area above QQS where battery/time go -->
    <dimen name="quick_qs_offset_height">48dp</dimen>
    <!-- Default height of an action bar. -->
+5 −2
Original line number Diff line number Diff line
@@ -39,14 +39,17 @@
    <!-- Elevation of toast view -->
    <dimen name="toast_elevation">2dp</dimen>

    <!-- The default height of the status bar used in {@link SystemBarUtils#getStatusBarHeight} to
         calculate the status bar height. -->
    <dimen name="status_bar_height_default">24dp</dimen>
    <!-- Height of the status bar.
         Do not read this dimen directly. Use {@link SystemBarUtils#getStatusBarHeight} instead.
         -->
    <dimen name="status_bar_height">24dp</dimen>
    <dimen name="status_bar_height">@dimen/status_bar_height_portrait</dimen>
    <!-- Height of the status bar in portrait.
         Do not read this dimen directly. Use {@link SystemBarUtils#getStatusBarHeight} instead.
         -->
    <dimen name="status_bar_height_portrait">@dimen/status_bar_height</dimen>
    <dimen name="status_bar_height_portrait">24dp</dimen>
    <!-- Height of the status bar in landscape.
         Do not read this dimen directly. Use {@link SystemBarUtils#getStatusBarHeight} instead.
         -->
+2 −0
Original line number Diff line number Diff line
@@ -4486,6 +4486,8 @@
  <java-symbol type="array" name="config_roundedCornerBottomRadiusAdjustmentArray" />
  <java-symbol type="bool" name="config_secondaryBuiltInDisplayIsRound" />
  <java-symbol type="array" name="config_builtInDisplayIsRoundArray" />

  <java-symbol type="bool" name="config_disableTaskSnapshots" />

  <java-symbol type="dimen" name="status_bar_height_default" />
</resources>
+3 −0
Original line number Diff line number Diff line
@@ -44,6 +44,9 @@
     -->
    <bool name="config_fillMainBuiltInDisplayCutout">true</bool>

    <!-- Height of the status bar -->
    <dimen name="status_bar_height_portrait">48dp</dimen>
    <dimen name="status_bar_height_landscape">28dp</dimen>
</resources>

Loading