summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hawkwood Glazier <jglazier@google.com> 2025-02-10 12:27:37 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-10 12:27:37 -0800
commit6747443b19da0ecec46808679a4235b60b5f0723 (patch)
tree592cce3313827aab7970a18b8f5bb2af71513129
parenta92e2162734c3e14ab525470b556987e6b8a54de (diff)
parent793069f3c0123f329274678f8c13287f87ff4af0 (diff)
Merge "Revert "Adjust clock view bounds when animating to/from doze"" into main
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt82
1 files changed, 41 insertions, 41 deletions
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
index 9bd533a80606..b9a5f1f18210 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
@@ -197,7 +197,43 @@ open class SimpleDigitalClockTextView(
)
}
- setInterpolatedViewBounds(getInterpolatedTextBounds(), widthMeasureSpec, heightMeasureSpec)
+ var expectedWidth: Int
+ var expectedHeight: Int
+
+ if (MeasureSpec.getMode(heightMeasureSpec) == EXACTLY) {
+ // For view which has fixed height, e.g. small clock,
+ // we should always return the size required from parent view
+ expectedHeight = heightMeasureSpec
+ } else {
+ expectedHeight =
+ MeasureSpec.makeMeasureSpec(
+ if (isSingleDigit()) {
+ maxSingleDigitHeight
+ } else {
+ textBounds.height() + 2 * lockScreenPaint.strokeWidth.toInt()
+ },
+ MeasureSpec.getMode(measuredHeightAndState),
+ )
+ }
+
+ if (MeasureSpec.getMode(widthMeasureSpec) == EXACTLY) {
+ expectedWidth = widthMeasureSpec
+ } else {
+ expectedWidth =
+ MeasureSpec.makeMeasureSpec(
+ if (isSingleDigit()) {
+ maxSingleDigitWidth
+ } else {
+ max(
+ textBounds.width() + 2 * lockScreenPaint.strokeWidth.toInt(),
+ MeasureSpec.getSize(measuredWidthAndState),
+ )
+ },
+ MeasureSpec.getMode(measuredWidthAndState),
+ )
+ }
+
+ setMeasuredDimension(expectedWidth, expectedHeight)
}
override fun onDraw(canvas: Canvas) {
@@ -323,7 +359,7 @@ open class SimpleDigitalClockTextView(
id == R.id.MINUTE_SECOND_DIGIT
}
- private fun getInterpolatedTextBounds(): Rect {
+ private fun updateInterpolatedTextBounds(): Rect {
val interpolatedTextBounds = Rect()
if (textAnimator.animator.animatedFraction != 1.0f && textAnimator.animator.isRunning) {
interpolatedTextBounds.left =
@@ -363,41 +399,7 @@ open class SimpleDigitalClockTextView(
return interpolatedTextBounds
}
- private fun setInterpolatedViewBounds(
- interpBounds: Rect,
- widthMeasureSpec: Int = measuredWidthAndState,
- heightMeasureSpec: Int = measuredHeightAndState,
- ) {
- val heightMode = MeasureSpec.getMode(heightMeasureSpec)
- val widthMode = MeasureSpec.getMode(widthMeasureSpec)
-
- val heightSpec =
- if (heightMode == EXACTLY) {
- heightMeasureSpec
- } else {
- MeasureSpec.makeMeasureSpec(
- if (isSingleDigit()) maxSingleDigitHeight
- else interpBounds.height() + 2 * lockScreenPaint.strokeWidth.toInt(),
- heightMode,
- )
- }
-
- val widthSpec =
- if (widthMode == EXACTLY) {
- widthMeasureSpec
- } else {
- MeasureSpec.makeMeasureSpec(
- if (isSingleDigit()) maxSingleDigitWidth
- else interpBounds.width() + 2 * lockScreenPaint.strokeWidth.toInt(),
- widthMode,
- )
- }
-
- setMeasuredDimension(widthSpec, heightSpec)
- parent?.requestLayout()
- }
-
- private fun updateXTranslation(inPoint: Point, interpolatedTextBounds: Rect): Point {
+ private fun updateXtranslation(inPoint: Point, interpolatedTextBounds: Rect): Point {
when (horizontalAlignment) {
HorizontalAlignment.LEFT -> {
inPoint.x = lockScreenPaint.strokeWidth.toInt() - interpolatedTextBounds.left
@@ -420,9 +422,7 @@ open class SimpleDigitalClockTextView(
// translation of reference point of text
// used for translation when calling textInterpolator
private fun getLocalTranslation(): Point {
- val interpolatedTextBounds = getInterpolatedTextBounds()
- setInterpolatedViewBounds(interpolatedTextBounds)
-
+ val interpolatedTextBounds = updateInterpolatedTextBounds()
val localTranslation = Point(0, 0)
val correctedBaseline = if (baseline != -1) baseline else baselineFromMeasure
// get the change from current baseline to expected baseline
@@ -452,7 +452,7 @@ open class SimpleDigitalClockTextView(
}
}
- return updateXTranslation(localTranslation, interpolatedTextBounds)
+ return updateXtranslation(localTranslation, interpolatedTextBounds)
}
fun applyStyles(textStyle: FontTextStyle, aodStyle: FontTextStyle?) {