diff options
author | 2023-06-05 17:08:07 +0000 | |
---|---|---|
committer | 2023-06-05 17:08:07 +0000 | |
commit | a1c77fb74c1af644f6b15bc23f5cdd4a92868d10 (patch) | |
tree | 1a89821b44ab56146e2f023c34212e7d7d4330cd | |
parent | 8aac605a4bfd925c41d239b5a4f6993a68a70538 (diff) | |
parent | d345d43f71ac104d747499bd7a8f1076d53f9de7 (diff) |
Merge "Fix carrier name animation during qqs expand" into udc-dev am: f79d65f010 am: d345d43f71
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23485348
Change-Id: I53c501b96c001824465e2c4f409533bba97b08ba
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 28 insertions, 15 deletions
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 50d33c6a733b..da6417d142d0 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -575,6 +575,7 @@ <dimen name="qs_brightness_margin_bottom">16dp</dimen> <dimen name="qqs_layout_margin_top">16dp</dimen> <dimen name="qqs_layout_padding_bottom">24dp</dimen> + <item name="qqs_expand_clock_scale" format="float" type="dimen">2.57</item> <!-- Most of the time it should be the same as notification_side_paddings as it's vertically aligned with notifications. The exception is split shade when this value becomes diff --git a/packages/SystemUI/res/xml/qs_header.xml b/packages/SystemUI/res/xml/qs_header.xml index 52a98984e6e2..8039c68485ca 100644 --- a/packages/SystemUI/res/xml/qs_header.xml +++ b/packages/SystemUI/res/xml/qs_header.xml @@ -43,8 +43,8 @@ app:layout_constraintBottom_toBottomOf="@id/carrier_group" /> <Transform - android:scaleX="2.57" - android:scaleY="2.57" + android:scaleX="@dimen/qqs_expand_clock_scale" + android:scaleY="@dimen/qqs_expand_clock_scale" /> </Constraint> diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt index f080d3dfab1d..3af75cef3d4c 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt @@ -34,6 +34,7 @@ import android.view.WindowInsets import android.widget.TextView import androidx.annotation.VisibleForTesting import androidx.constraintlayout.motion.widget.MotionLayout +import androidx.core.view.doOnLayout import com.android.app.animation.Interpolators import com.android.settingslib.Utils import com.android.systemui.Dumpable @@ -220,6 +221,7 @@ constructor( override fun demoCommands() = listOf(DemoMode.COMMAND_CLOCK) override fun dispatchDemoCommand(command: String, args: Bundle) = clock.dispatchDemoCommand(command, args) + override fun onDemoModeStarted() = clock.onDemoModeStarted() override fun onDemoModeFinished() = clock.onDemoModeFinished() } @@ -259,6 +261,7 @@ constructor( resources.getDimensionPixelSize(R.dimen.large_screen_shade_header_min_height) lastInsets?.let { updateConstraintsForInsets(header, it) } updateResources() + updateCarrierGroupPadding() } } @@ -291,6 +294,7 @@ constructor( privacyIconsController.chipVisibilityListener = chipVisibilityListener updateVisibility() updateTransition() + updateCarrierGroupPadding() header.setOnApplyWindowInsetsListener(insetListener) @@ -298,8 +302,6 @@ constructor( val newPivot = if (v.isLayoutRtl) v.width.toFloat() else 0f v.pivotX = newPivot v.pivotY = v.height.toFloat() / 2 - - mShadeCarrierGroup.setPaddingRelative((v.width * v.scaleX).toInt(), 0, 0, 0) } clock.setOnClickListener { launchClockActivity() } @@ -359,6 +361,14 @@ constructor( .load(context, resources.getXml(R.xml.large_screen_shade_header)) } + private fun updateCarrierGroupPadding() { + clock.doOnLayout { + val maxClockWidth = + (clock.width * resources.getFloat(R.dimen.qqs_expand_clock_scale)).toInt() + mShadeCarrierGroup.setPaddingRelative(maxClockWidth, 0, 0, 0) + } + } + private fun updateConstraintsForInsets(view: MotionLayout, insets: WindowInsets) { val cutout = insets.displayCutout.also { this.cutout = it } diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt index 20da8a619100..2da2e9238d0a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeHeaderControllerTest.kt @@ -78,6 +78,7 @@ import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.mock import org.mockito.Mockito.reset +import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.junit.MockitoJUnit @@ -387,7 +388,7 @@ class ShadeHeaderControllerTest : SysuiTestCase() { whenever(clock.isLayoutRtl).thenReturn(false) val captor = ArgumentCaptor.forClass(View.OnLayoutChangeListener::class.java) - verify(clock).addOnLayoutChangeListener(capture(captor)) + verify(clock, times(2)).addOnLayoutChangeListener(capture(captor)) captor.value.onLayoutChange(clock, 0, 1, 2, 3, 4, 5, 6, 7) verify(clock).pivotX = 0f @@ -400,7 +401,7 @@ class ShadeHeaderControllerTest : SysuiTestCase() { whenever(clock.isLayoutRtl).thenReturn(true) val captor = ArgumentCaptor.forClass(View.OnLayoutChangeListener::class.java) - verify(clock).addOnLayoutChangeListener(capture(captor)) + verify(clock, times(2)).addOnLayoutChangeListener(capture(captor)) captor.value.onLayoutChange(clock, 0, 1, 2, 3, 4, 5, 6, 7) verify(clock).pivotX = width.toFloat() @@ -793,7 +794,7 @@ class ShadeHeaderControllerTest : SysuiTestCase() { @Test fun clockPivotYInCenter() { val captor = ArgumentCaptor.forClass(View.OnLayoutChangeListener::class.java) - verify(clock).addOnLayoutChangeListener(capture(captor)) + verify(clock, times(2)).addOnLayoutChangeListener(capture(captor)) var height = 100 val width = 50 @@ -825,16 +826,17 @@ class ShadeHeaderControllerTest : SysuiTestCase() { } @Test - fun carrierLeftPaddingIsSetWhenClockLayoutChanges() { - val width = 200 - whenever(clock.width).thenReturn(width) - whenever(clock.scaleX).thenReturn(2.57f) // 2.57 comes from qs_header.xml - val captor = ArgumentCaptor.forClass(View.OnLayoutChangeListener::class.java) + fun carrierStartPaddingIsSetOnClockLayout() { + val clockWidth = 200 + val maxClockScale = context.resources.getFloat(R.dimen.qqs_expand_clock_scale) + val expectedStartPadding = (clockWidth * maxClockScale).toInt() + whenever(clock.width).thenReturn(clockWidth) - verify(clock).addOnLayoutChangeListener(capture(captor)) - captor.value.onLayoutChange(clock, 0, 0, width, 0, 0, 0, 0, 0) + val captor = ArgumentCaptor.forClass(View.OnLayoutChangeListener::class.java) + verify(clock, times(2)).addOnLayoutChangeListener(capture(captor)) + captor.allValues.forEach { clock.executeLayoutChange(0, 0, clockWidth, 0, it) } - verify(carrierGroup).setPaddingRelative(514, 0, 0, 0) + verify(carrierGroup).setPaddingRelative(expectedStartPadding, 0, 0, 0) } @Test |