diff options
author | 2025-02-10 12:27:37 -0800 | |
---|---|---|
committer | 2025-02-10 12:27:37 -0800 | |
commit | 6747443b19da0ecec46808679a4235b60b5f0723 (patch) | |
tree | 592cce3313827aab7970a18b8f5bb2af71513129 | |
parent | a92e2162734c3e14ab525470b556987e6b8a54de (diff) | |
parent | 793069f3c0123f329274678f8c13287f87ff4af0 (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.kt | 82 |
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?) { |