Loading packages/SystemUI/customization/src/com/android/systemui/shared/clocks/AnimatableClockView.kt +10 −0 Original line number Diff line number Diff line Loading @@ -27,7 +27,9 @@ import android.text.TextUtils import android.text.format.DateFormat import android.util.AttributeSet import android.util.MathUtils.constrainedMap import android.util.TypedValue import android.view.View import android.view.View.MeasureSpec.EXACTLY import android.widget.TextView import com.android.app.animation.Interpolators import com.android.internal.annotations.VisibleForTesting Loading @@ -42,6 +44,7 @@ import java.io.PrintWriter import java.util.Calendar import java.util.Locale import java.util.TimeZone import kotlin.math.min /** * Displays the time with the hour positioned above the minutes. (ie: 09 above 30 is 9:30) Loading Loading @@ -85,6 +88,8 @@ class AnimatableClockView @JvmOverloads constructor( private var textAnimator: TextAnimator? = null private var onTextAnimatorInitialized: Runnable? = null // last text size which is not constrained by view height private var lastUnconstrainedTextSize: Float = Float.MAX_VALUE @VisibleForTesting var textAnimatorFactory: (Layout, () -> Unit) -> TextAnimator = { layout, invalidateCb -> TextAnimator(layout, NUM_CLOCK_FONT_ANIMATION_STEPS, invalidateCb) } Loading Loading @@ -188,6 +193,11 @@ class AnimatableClockView @JvmOverloads constructor( @SuppressLint("DrawAllocation") override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { logger.d("onMeasure") if (migratedClocks && !isSingleLineInternal && MeasureSpec.getMode(heightMeasureSpec) == EXACTLY) { setTextSize(TypedValue.COMPLEX_UNIT_PX, min(lastUnconstrainedTextSize, MeasureSpec.getSize(heightMeasureSpec) / 2F)) } super.onMeasure(widthMeasureSpec, heightMeasureSpec) val animator = textAnimator if (animator == null) { Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt +3 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import androidx.constraintlayout.widget.ConstraintSet import androidx.constraintlayout.widget.ConstraintSet.BOTTOM import androidx.constraintlayout.widget.ConstraintSet.END import androidx.constraintlayout.widget.ConstraintSet.GONE import androidx.constraintlayout.widget.ConstraintSet.MATCH_CONSTRAINT import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID import androidx.constraintlayout.widget.ConstraintSet.START import androidx.constraintlayout.widget.ConstraintSet.TOP Loading Loading @@ -160,7 +161,7 @@ constructor( constraints.apply { connect(R.id.lockscreen_clock_view_large, START, PARENT_ID, START) connect(R.id.lockscreen_clock_view_large, END, guideline, END) connect(R.id.lockscreen_clock_view_large, BOTTOM, R.id.lock_icon_view, TOP) connect(R.id.lockscreen_clock_view_large, BOTTOM, R.id.device_entry_icon_view, TOP) var largeClockTopMargin = context.resources.getDimensionPixelSize(R.dimen.status_bar_height) + context.resources.getDimensionPixelSize( Loading @@ -172,7 +173,7 @@ constructor( connect(R.id.lockscreen_clock_view_large, TOP, PARENT_ID, TOP, largeClockTopMargin) constrainWidth(R.id.lockscreen_clock_view_large, WRAP_CONTENT) constrainHeight(R.id.lockscreen_clock_view_large, WRAP_CONTENT) constrainHeight(R.id.lockscreen_clock_view_large, MATCH_CONSTRAINT) constrainWidth(R.id.lockscreen_clock_view, WRAP_CONTENT) constrainHeight( R.id.lockscreen_clock_view, Loading Loading
packages/SystemUI/customization/src/com/android/systemui/shared/clocks/AnimatableClockView.kt +10 −0 Original line number Diff line number Diff line Loading @@ -27,7 +27,9 @@ import android.text.TextUtils import android.text.format.DateFormat import android.util.AttributeSet import android.util.MathUtils.constrainedMap import android.util.TypedValue import android.view.View import android.view.View.MeasureSpec.EXACTLY import android.widget.TextView import com.android.app.animation.Interpolators import com.android.internal.annotations.VisibleForTesting Loading @@ -42,6 +44,7 @@ import java.io.PrintWriter import java.util.Calendar import java.util.Locale import java.util.TimeZone import kotlin.math.min /** * Displays the time with the hour positioned above the minutes. (ie: 09 above 30 is 9:30) Loading Loading @@ -85,6 +88,8 @@ class AnimatableClockView @JvmOverloads constructor( private var textAnimator: TextAnimator? = null private var onTextAnimatorInitialized: Runnable? = null // last text size which is not constrained by view height private var lastUnconstrainedTextSize: Float = Float.MAX_VALUE @VisibleForTesting var textAnimatorFactory: (Layout, () -> Unit) -> TextAnimator = { layout, invalidateCb -> TextAnimator(layout, NUM_CLOCK_FONT_ANIMATION_STEPS, invalidateCb) } Loading Loading @@ -188,6 +193,11 @@ class AnimatableClockView @JvmOverloads constructor( @SuppressLint("DrawAllocation") override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { logger.d("onMeasure") if (migratedClocks && !isSingleLineInternal && MeasureSpec.getMode(heightMeasureSpec) == EXACTLY) { setTextSize(TypedValue.COMPLEX_UNIT_PX, min(lastUnconstrainedTextSize, MeasureSpec.getSize(heightMeasureSpec) / 2F)) } super.onMeasure(widthMeasureSpec, heightMeasureSpec) val animator = textAnimator if (animator == null) { Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt +3 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import androidx.constraintlayout.widget.ConstraintSet import androidx.constraintlayout.widget.ConstraintSet.BOTTOM import androidx.constraintlayout.widget.ConstraintSet.END import androidx.constraintlayout.widget.ConstraintSet.GONE import androidx.constraintlayout.widget.ConstraintSet.MATCH_CONSTRAINT import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID import androidx.constraintlayout.widget.ConstraintSet.START import androidx.constraintlayout.widget.ConstraintSet.TOP Loading Loading @@ -160,7 +161,7 @@ constructor( constraints.apply { connect(R.id.lockscreen_clock_view_large, START, PARENT_ID, START) connect(R.id.lockscreen_clock_view_large, END, guideline, END) connect(R.id.lockscreen_clock_view_large, BOTTOM, R.id.lock_icon_view, TOP) connect(R.id.lockscreen_clock_view_large, BOTTOM, R.id.device_entry_icon_view, TOP) var largeClockTopMargin = context.resources.getDimensionPixelSize(R.dimen.status_bar_height) + context.resources.getDimensionPixelSize( Loading @@ -172,7 +173,7 @@ constructor( connect(R.id.lockscreen_clock_view_large, TOP, PARENT_ID, TOP, largeClockTopMargin) constrainWidth(R.id.lockscreen_clock_view_large, WRAP_CONTENT) constrainHeight(R.id.lockscreen_clock_view_large, WRAP_CONTENT) constrainHeight(R.id.lockscreen_clock_view_large, MATCH_CONSTRAINT) constrainWidth(R.id.lockscreen_clock_view, WRAP_CONTENT) constrainHeight( R.id.lockscreen_clock_view, Loading