Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/Roundable.kt +12 −2 Original line number Diff line number Diff line Loading @@ -306,9 +306,12 @@ interface Roundable { */ class RoundableState( internal val targetView: View, roundable: Roundable, internal val maxRadius: Float, private val roundable: Roundable, maxRadius: Float, ) { internal var maxRadius = maxRadius private set /** Animatable for top roundness */ private val topAnimatable = topAnimatable(roundable) Loading Loading @@ -356,6 +359,13 @@ class RoundableState( PropertyAnimator.setProperty(targetView, bottomAnimatable, value, DURATION, animated) } fun setMaxRadius(radius: Float) { if (maxRadius != radius) { maxRadius = radius roundable.applyRoundnessAndInvalidate() } } fun debugString() = buildString { append("TargetView: ${targetView.hashCode()} ") append("Top: $topRoundness ") Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java +5 −1 Original line number Diff line number Diff line Loading @@ -214,7 +214,11 @@ public abstract class ExpandableOutlineView extends ExpandableView { } else { maxRadius = res.getDimensionPixelSize(R.dimen.notification_corner_radius); } if (mRoundableState == null) { mRoundableState = new RoundableState(this, this, maxRadius); } else { mRoundableState.setMaxRadius(maxRadius); } setClipToOutline(mAlwaysRoundBothCorners); } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewTest.kt +14 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.notification.FakeShadowView import com.android.systemui.statusbar.notification.NotificationUtils import com.android.systemui.statusbar.notification.SourceType import com.android.systemui.util.mockito.mock import com.google.common.truth.Truth.assertThat import org.junit.Before Loading Loading @@ -83,4 +84,17 @@ class ActivatableNotificationViewTest : SysuiTestCase() { mView.updateBackgroundColors() assertThat(mView.currentBackgroundTint).isEqualTo(mNormalColor) } @Test fun roundnessShouldBeTheSame_after_onDensityOrFontScaleChanged() { val roundableState = mView.roundableState assertThat(mView.topRoundness).isEqualTo(0f) mView.requestTopRoundness(1f, SourceType.from("")) assertThat(mView.topRoundness).isEqualTo(1f) mView.onDensityOrFontScaleChanged() assertThat(mView.topRoundness).isEqualTo(1f) assertThat(mView.roundableState.hashCode()).isEqualTo(roundableState.hashCode()) } } No newline at end of file Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/Roundable.kt +12 −2 Original line number Diff line number Diff line Loading @@ -306,9 +306,12 @@ interface Roundable { */ class RoundableState( internal val targetView: View, roundable: Roundable, internal val maxRadius: Float, private val roundable: Roundable, maxRadius: Float, ) { internal var maxRadius = maxRadius private set /** Animatable for top roundness */ private val topAnimatable = topAnimatable(roundable) Loading Loading @@ -356,6 +359,13 @@ class RoundableState( PropertyAnimator.setProperty(targetView, bottomAnimatable, value, DURATION, animated) } fun setMaxRadius(radius: Float) { if (maxRadius != radius) { maxRadius = radius roundable.applyRoundnessAndInvalidate() } } fun debugString() = buildString { append("TargetView: ${targetView.hashCode()} ") append("Top: $topRoundness ") Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java +5 −1 Original line number Diff line number Diff line Loading @@ -214,7 +214,11 @@ public abstract class ExpandableOutlineView extends ExpandableView { } else { maxRadius = res.getDimensionPixelSize(R.dimen.notification_corner_radius); } if (mRoundableState == null) { mRoundableState = new RoundableState(this, this, maxRadius); } else { mRoundableState.setMaxRadius(maxRadius); } setClipToOutline(mAlwaysRoundBothCorners); } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewTest.kt +14 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.notification.FakeShadowView import com.android.systemui.statusbar.notification.NotificationUtils import com.android.systemui.statusbar.notification.SourceType import com.android.systemui.util.mockito.mock import com.google.common.truth.Truth.assertThat import org.junit.Before Loading Loading @@ -83,4 +84,17 @@ class ActivatableNotificationViewTest : SysuiTestCase() { mView.updateBackgroundColors() assertThat(mView.currentBackgroundTint).isEqualTo(mNormalColor) } @Test fun roundnessShouldBeTheSame_after_onDensityOrFontScaleChanged() { val roundableState = mView.roundableState assertThat(mView.topRoundness).isEqualTo(0f) mView.requestTopRoundness(1f, SourceType.from("")) assertThat(mView.topRoundness).isEqualTo(1f) mView.onDensityOrFontScaleChanged() assertThat(mView.topRoundness).isEqualTo(1f) assertThat(mView.roundableState.hashCode()).isEqualTo(roundableState.hashCode()) } } No newline at end of file