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:
@@ -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 ")
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user