Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6747443b authored by Hawkwood Glazier's avatar Hawkwood Glazier Committed by Android (Google) Code Review
Browse files

Merge "Revert "Adjust clock view bounds when animating to/from doze"" into main

parents a92e2162 793069f3
Loading
Loading
Loading
Loading
+41 −41
Original line number Diff line number Diff line
@@ -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?) {