Merge "Do not reset roundness on ExpandableOutlineView.initDimens()" into tm-qpr-dev am: f37fea9336

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20745286

Change-Id: I500953c1f05c59dc01ebe1993b9d547a1258a6ef
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Omar Miatello
2022-12-16 10:44:26 +00:00
committed by Automerger Merge Worker
3 changed files with 31 additions and 3 deletions

View File

@@ -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)
@@ -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 ")

View File

@@ -214,7 +214,11 @@ public abstract class ExpandableOutlineView extends ExpandableView {
} else {
maxRadius = res.getDimensionPixelSize(R.dimen.notification_corner_radius);
}
mRoundableState = new RoundableState(this, this, maxRadius);
if (mRoundableState == null) {
mRoundableState = new RoundableState(this, this, maxRadius);
} else {
mRoundableState.setMaxRadius(maxRadius);
}
setClipToOutline(mAlwaysRoundBothCorners);
}

View File

@@ -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
@@ -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())
}
}