Skip to content

Commit 1376ea9

Browse files
Chris CrumpGenkzsz11
authored andcommitted
SystemUI: Update keyguard indication margin when fod is in use
Decrease the bottom margin when fingerprint in display is active to avoid obstructing the view Change-Id: I3f84384b0ea6369d7ba2f16f53c415f5285decea
1 parent 064cf0c commit 1376ea9

3 files changed

Lines changed: 40 additions & 10 deletions

File tree

packages/SystemUI/res/layout/keyguard_bottom_area.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
android:id="@+id/keyguard_indication_area"
3030
android:layout_width="match_parent"
3131
android:layout_height="wrap_content"
32-
android:layout_marginBottom="@dimen/keyguard_indication_margin_bottom"
3332
android:layout_gravity="bottom|center_horizontal"
3433
android:orientation="vertical">
3534

packages/SystemUI/res/values/nad_dimens.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,7 @@
5151
<dimen name="keyguard_charging_indication_width">35dp</dimen>
5252

5353
<dimen name="screenrecord_dot_size">48dp</dimen>
54+
55+
<!-- Bottom margin size when fingerprint in display is active -->
56+
<dimen name="keyguard_indication_margin_bottom_fingerprint_in_display">@dimen/keyguard_indication_margin_bottom</dimen>
5457
</resources>

packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import android.content.pm.ResolveInfo;
4141
import android.content.res.Configuration;
4242
import android.graphics.drawable.Drawable;
43+
import android.hardware.biometrics.BiometricSourceType;
4344
import android.os.AsyncTask;
4445
import android.os.Bundle;
4546
import android.os.IBinder;
@@ -63,6 +64,7 @@
6364
import android.widget.TextView;
6465

6566
import com.android.internal.annotations.VisibleForTesting;
67+
import com.android.internal.util.nad.fod.FodUtils;
6668
import com.android.internal.widget.LockPatternUtils;
6769
import com.android.keyguard.KeyguardUpdateMonitor;
6870
import com.android.keyguard.KeyguardUpdateMonitorCallback;
@@ -143,6 +145,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
143145

144146
private boolean mUserSetupComplete;
145147
private boolean mPrewarmBound;
148+
private boolean mIsFingerprintRunning;
146149
private Messenger mPrewarmMessenger;
147150
private final ServiceConnection mPrewarmConnection = new ServiceConnection() {
148151

@@ -168,6 +171,7 @@ public void onServiceDisconnected(ComponentName name) {
168171
private String mLeftButtonStr;
169172
private boolean mDozing;
170173
private int mIndicationBottomMargin;
174+
private int mIndicationBottomMarginFod;
171175
private float mDarkAmount;
172176
private int mBurnInXOffset;
173177
private int mBurnInYOffset;
@@ -244,6 +248,8 @@ protected void onFinishInflate() {
244248
mIndicationText = findViewById(R.id.keyguard_indication_text);
245249
mIndicationBottomMargin = getResources().getDimensionPixelSize(
246250
R.dimen.keyguard_indication_margin_bottom);
251+
mIndicationBottomMarginFod = getResources().getDimensionPixelSize(
252+
R.dimen.keyguard_indication_margin_bottom_fingerprint_in_display);
247253
mBurnInYOffset = getResources().getDimensionPixelSize(
248254
R.dimen.default_burn_in_prevention_offset);
249255
updateCameraVisibility();
@@ -260,6 +266,7 @@ protected void onFinishInflate() {
260266
mAccessibilityController = Dependency.get(AccessibilityController.class);
261267
mActivityIntentHelper = new ActivityIntentHelper(getContext());
262268
updateLeftAffordance();
269+
updateIndicationAreaPadding();
263270
}
264271

265272
@Override
@@ -307,15 +314,9 @@ private void initAccessibility() {
307314
@Override
308315
protected void onConfigurationChanged(Configuration newConfig) {
309316
super.onConfigurationChanged(newConfig);
310-
mIndicationBottomMargin = getResources().getDimensionPixelSize(
311-
R.dimen.keyguard_indication_margin_bottom);
312-
mBurnInYOffset = getResources().getDimensionPixelSize(
313-
R.dimen.default_burn_in_prevention_offset);
314-
MarginLayoutParams mlp = (MarginLayoutParams) mIndicationArea.getLayoutParams();
315-
if (mlp.bottomMargin != mIndicationBottomMargin) {
316-
mlp.bottomMargin = mIndicationBottomMargin;
317-
mIndicationArea.setLayoutParams(mlp);
318-
}
317+
318+
// Update the bottom margin of the indication area
319+
updateIndicationAreaPadding();
319320

320321
// Respect font size setting.
321322
mEnterpriseDisclosure.setTextSize(TypedValue.COMPLEX_UNIT_PX,
@@ -385,6 +386,23 @@ private void updateCameraVisibility() {
385386
&& mRightButton.getIcon().isVisible ? View.VISIBLE : View.GONE);
386387
}
387388

389+
private void updateIndicationAreaPadding() {
390+
mIndicationBottomMargin = getResources().getDimensionPixelSize(
391+
R.dimen.keyguard_indication_margin_bottom);
392+
mIndicationBottomMarginFod = getResources().getDimensionPixelSize(
393+
R.dimen.keyguard_indication_margin_bottom_fingerprint_in_display);
394+
mBurnInYOffset = getResources().getDimensionPixelSize(
395+
R.dimen.default_burn_in_prevention_offset);
396+
MarginLayoutParams mlp = (MarginLayoutParams) mIndicationArea.getLayoutParams();
397+
398+
int bottomMargin = hasInDisplayFingerprint() ? mIndicationBottomMarginFod : mIndicationBottomMargin;
399+
boolean newLp = mlp.bottomMargin != bottomMargin;
400+
if (newLp) {
401+
mlp.bottomMargin = bottomMargin;
402+
mIndicationArea.setLayoutParams(mlp);
403+
}
404+
}
405+
388406
/**
389407
* Set an alternate icon for the left assist affordance (replace the mic icon)
390408
*/
@@ -407,6 +425,10 @@ private void updateLeftAffordanceIcon() {
407425
mLeftAffordanceView.setContentDescription(state.contentDescription);
408426
}
409427

428+
private boolean hasInDisplayFingerprint() {
429+
return FodUtils.hasFodSupport(mContext) && mIsFingerprintRunning;
430+
}
431+
410432
public boolean isLeftVoiceAssist() {
411433
return mLeftIsVoiceAssist;
412434
}
@@ -716,6 +738,12 @@ public void onUserUnlocked() {
716738
updateCameraVisibility();
717739
updateLeftAffordance();
718740
}
741+
@Override
742+
public void onBiometricRunningStateChanged(boolean running,
743+
BiometricSourceType biometricSourceType) {
744+
mIsFingerprintRunning = running;
745+
updateIndicationAreaPadding();
746+
}
719747
};
720748

721749
public void updateLeftAffordance() {

0 commit comments

Comments
 (0)