Skip to content

Commit 064cf0c

Browse files
jhenrique09Genkzsz11
authored andcommitted
FODCircleView: Fix position if cutout is hidden
Change-Id: I314dba101541547018eaa8904acf4cd2765824b2 Signed-off-by: Henrique Pereira <hlcpereira@pixelexperience.org>
1 parent 07639fd commit 064cf0c

1 file changed

Lines changed: 30 additions & 5 deletions

File tree

packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
import com.android.keyguard.KeyguardUpdateMonitorCallback;
4444
import com.android.systemui.Dependency;
4545
import com.android.systemui.R;
46+
import com.android.systemui.statusbar.policy.ConfigurationController;
47+
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
4648

4749
import vendor.lineage.biometrics.fingerprint.inscreen.V1_0.IFingerprintInscreen;
4850
import vendor.lineage.biometrics.fingerprint.inscreen.V1_0.IFingerprintInscreenCallback;
@@ -51,7 +53,7 @@
5153
import java.util.Timer;
5254
import java.util.TimerTask;
5355

54-
public class FODCircleView extends ImageView {
56+
public class FODCircleView extends ImageView implements ConfigurationListener {
5557
private final int mPositionX;
5658
private final int mPositionY;
5759
private final int mSize;
@@ -137,6 +139,9 @@ public void onScreenTurnedOn() {
137139
}
138140
};
139141

142+
private boolean mCutoutMasked;
143+
private int mStatusbarHeight;
144+
140145
public FODCircleView(Context context) {
141146
super(context);
142147

@@ -208,6 +213,9 @@ protected void onDraw(Canvas canvas) {
208213

209214
mUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
210215
mUpdateMonitor.registerCallback(mMonitorCallback);
216+
217+
updateCutoutFlags();
218+
Dependency.get(ConfigurationController.class).addCallback(this);
211219
}
212220

213221
@Override
@@ -354,22 +362,23 @@ private void updatePosition() {
354362
defaultDisplay.getRealSize(size);
355363

356364
int rotation = defaultDisplay.getRotation();
365+
int cutoutMaskedExtra = mCutoutMasked ? mStatusbarHeight : 0;
357366
int x, y;
358367
switch (rotation) {
359368
case Surface.ROTATION_0:
360369
x = mPositionX;
361-
y = mPositionY;
370+
y = mPositionY - cutoutMaskedExtra;
362371
break;
363372
case Surface.ROTATION_90:
364373
x = mPositionY;
365-
y = mPositionX;
374+
y = mPositionX - cutoutMaskedExtra;
366375
break;
367376
case Surface.ROTATION_180:
368377
x = mPositionX;
369-
y = size.y - mPositionY - mSize;
378+
y = size.y - mPositionY - mSize - cutoutMaskedExtra;
370379
break;
371380
case Surface.ROTATION_270:
372-
x = size.x - mPositionY - mSize - mNavigationBarSize;
381+
x = size.x - mPositionY - mSize - mNavigationBarSize - cutoutMaskedExtra;
373382
y = mPositionX;
374383
break;
375384
default:
@@ -461,4 +470,20 @@ public void run() {
461470
mHandler.post(() -> updatePosition());
462471
}
463472
};
473+
474+
@Override
475+
public void onOverlayChanged() {
476+
updateCutoutFlags();
477+
}
478+
479+
private void updateCutoutFlags() {
480+
mStatusbarHeight = getContext().getResources().getDimensionPixelSize(
481+
com.android.internal.R.dimen.status_bar_height_portrait);
482+
boolean cutoutMasked = getContext().getResources().getBoolean(
483+
com.android.internal.R.bool.config_maskMainBuiltInDisplayCutout);
484+
if (mCutoutMasked != cutoutMasked){
485+
mCutoutMasked = cutoutMasked;
486+
updatePosition();
487+
}
488+
}
464489
}

0 commit comments

Comments
 (0)