PointerLocationView: Make header avoid rounded corners

Fixes: 201281153
Test: manual: check that the pointer location header is shown below the
rounded corner cutouts

Change-Id: I6f140e018d37927283b63c4e7082bd9cfac0f0a6
This commit is contained in:
Prabir Pradhan
2022-01-10 11:52:44 -08:00
parent 5bf2bc35a8
commit 474b704e5d

View File

@@ -37,6 +37,7 @@ import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.MotionEvent.PointerCoords;
import android.view.RoundedCorner;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
@@ -229,13 +230,29 @@ public class PointerLocationView extends View implements InputDeviceListener,
@Override
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
if (insets.getDisplayCutout() != null) {
mHeaderPaddingTop = insets.getDisplayCutout().getSafeInsetTop();
mWaterfallInsets = insets.getDisplayCutout().getWaterfallInsets();
} else {
mHeaderPaddingTop = 0;
mWaterfallInsets = Insets.NONE;
int headerPaddingTop = 0;
Insets waterfallInsets = Insets.NONE;
final RoundedCorner topLeftRounded =
insets.getRoundedCorner(RoundedCorner.POSITION_TOP_LEFT);
if (topLeftRounded != null) {
headerPaddingTop = topLeftRounded.getRadius();
}
final RoundedCorner topRightRounded =
insets.getRoundedCorner(RoundedCorner.POSITION_TOP_RIGHT);
if (topRightRounded != null) {
headerPaddingTop = Math.max(headerPaddingTop, topRightRounded.getRadius());
}
if (insets.getDisplayCutout() != null) {
headerPaddingTop =
Math.max(headerPaddingTop, insets.getDisplayCutout().getSafeInsetTop());
waterfallInsets = insets.getDisplayCutout().getWaterfallInsets();
}
mHeaderPaddingTop = headerPaddingTop;
mWaterfallInsets = waterfallInsets;
return super.onApplyWindowInsets(insets);
}