[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
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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. -->
|
||||
|
||||
@@ -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.
|
||||
-->
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
|
||||
@@ -56,6 +56,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>
|
||||
|
||||
|
||||
|
||||
@@ -48,6 +48,9 @@
|
||||
-->
|
||||
<bool name="config_fillMainBuiltInDisplayCutout">true</bool>
|
||||
|
||||
<!-- Height of the status bar -->
|
||||
<dimen name="status_bar_height_portrait">136px</dimen>
|
||||
<dimen name="status_bar_height_landscape">28dp</dimen>
|
||||
</resources>
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,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>
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,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>
|
||||
|
||||
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
<string translatable="false" name="config_mainBuiltInDisplayCutout"></string>
|
||||
<string translatable="false" name="config_mainBuiltInDisplayCutoutRectApproximation"></string>
|
||||
|
||||
<!-- Height of the status bar in portrait. The height should be
|
||||
Max((status bar content height + waterfall top size), top cutout size) -->
|
||||
<dimen name="status_bar_height_portrait">28dp</dimen>
|
||||
<!-- Max((28 + 20), 0) = 48 -->
|
||||
<dimen name="status_bar_height_landscape">48dp</dimen>
|
||||
|
||||
<dimen name="waterfall_display_left_edge_size">20dp</dimen>
|
||||
<dimen name="waterfall_display_top_edge_size">0dp</dimen>
|
||||
<dimen name="waterfall_display_right_edge_size">20dp</dimen>
|
||||
|
||||
@@ -47,6 +47,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>
|
||||
|
||||
|
||||
|
||||
@@ -25,4 +25,7 @@
|
||||
by shrinking the display such that it does not overlap the cutout area. -->
|
||||
<bool name="config_maskMainBuiltInDisplayCutout">true</bool>
|
||||
|
||||
<!-- Height of the status bar -->
|
||||
<dimen name="status_bar_height_portrait">28dp</dimen>
|
||||
<dimen name="status_bar_height_landscape">28dp</dimen>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user