Update the ambient indication container
- Move the ambient indication container to the keyguard
bottom area so that the KeyguardBottomAreaView can control
the x and y burn-in offsets so that they are equivalent to the
charging text burn in offsets.
Test: atest KeyguardBottomAreaTest
Test: manual
Bug: 206122454
Change-Id: I85d7684aa7f229a5c04a6c35ea0cffa449b876e4
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index 8dbd59d..759670e 100644
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -17,7 +17,6 @@
<com.android.systemui.statusbar.phone.KeyguardBottomAreaView
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
android:id="@+id/keyguard_bottom_area"
android:layout_height="match_parent"
android:layout_width="match_parent"
@@ -114,7 +113,8 @@
android:layout_height="match_parent">
<include layout="@layout/keyguard_bottom_area_overlay" />
-
</FrameLayout>
+ <include layout="@layout/ambient_indication"
+ android:id="@+id/ambient_indication_container" />
</com.android.systemui.statusbar.phone.KeyguardBottomAreaView>
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index 82186c1..591d8f5 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -119,9 +119,6 @@
systemui:layout_constraintEnd_toEndOf="parent"
/>
- <include layout="@layout/ambient_indication"
- android:id="@+id/ambient_indication_container" />
-
<include layout="@layout/photo_preview_overlay" />
<include
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index e26f75f..d27b5fc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -71,6 +71,7 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.widget.LockPatternUtils;
@@ -150,6 +151,7 @@
private ControlsComponent mControlsComponent;
private boolean mControlServicesAvailable = false;
+ @Nullable private View mAmbientIndicationArea;
private ViewGroup mIndicationArea;
private TextView mIndicationText;
private TextView mIndicationTextBottom;
@@ -270,6 +272,29 @@
public void initFrom(KeyguardBottomAreaView oldBottomArea) {
setStatusBar(oldBottomArea.mStatusBar);
+
+ // if it exists, continue to use the original ambient indication container
+ // instead of the newly inflated one
+ if (mAmbientIndicationArea != null) {
+ // remove old ambient indication from its parent
+ View originalAmbientIndicationView =
+ oldBottomArea.findViewById(R.id.ambient_indication_container);
+ ((ViewGroup) originalAmbientIndicationView.getParent())
+ .removeView(originalAmbientIndicationView);
+
+ // remove current ambient indication from its parent (discard)
+ ViewGroup ambientIndicationParent = (ViewGroup) mAmbientIndicationArea.getParent();
+ int ambientIndicationIndex =
+ ambientIndicationParent.indexOfChild(mAmbientIndicationArea);
+ ambientIndicationParent.removeView(mAmbientIndicationArea);
+
+ // add the old ambient indication to this view
+ ambientIndicationParent.addView(originalAmbientIndicationView, ambientIndicationIndex);
+ mAmbientIndicationArea = originalAmbientIndicationView;
+
+ // update burn-in offsets
+ dozeTimeTick();
+ }
}
@Override
@@ -283,6 +308,7 @@
mWalletButton = findViewById(R.id.wallet_button);
mControlsButton = findViewById(R.id.controls_button);
mIndicationArea = findViewById(R.id.keyguard_indication_area);
+ mAmbientIndicationArea = findViewById(R.id.ambient_indication_container);
mIndicationText = findViewById(R.id.keyguard_indication_text);
mIndicationTextBottom = findViewById(R.id.keyguard_indication_text_bottom);
mIndicationBottomMargin = getResources().getDimensionPixelSize(
@@ -901,6 +927,7 @@
int burnInYOffset = getBurnInOffset(mBurnInYOffset * 2, false /* xAxis */)
- mBurnInYOffset;
mIndicationArea.setTranslationY(burnInYOffset * mDarkAmount);
+ mAmbientIndicationArea.setTranslationY(burnInYOffset * mDarkAmount);
}
public void setAntiBurnInOffsetX(int burnInXOffset) {
@@ -909,6 +936,7 @@
}
mBurnInXOffset = burnInXOffset;
mIndicationArea.setTranslationX(burnInXOffset);
+ mAmbientIndicationArea.setTranslationX(burnInXOffset);
}
/**
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaTest.kt
index 210744e..3257a84 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaTest.kt
@@ -47,8 +47,8 @@
@Test
fun initFrom_doesntCrash() {
- val other = LayoutInflater.from(mContext).inflate(
- R.layout.keyguard_bottom_area, null, false) as KeyguardBottomAreaView
+ val other = LayoutInflater.from(mContext).inflate(R.layout.keyguard_bottom_area,
+ null, false) as KeyguardBottomAreaView
other.initFrom(mKeyguardBottomArea)
other.launchVoiceAssist()