Merge "Support Views that are scaled in GhostedViewLaunchAnimatorController" into tm-qpr-dev

This commit is contained in:
Jordan Demeulenaere
2023-01-19 15:59:01 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 6 deletions

View File

@@ -36,6 +36,7 @@ import android.widget.FrameLayout
import com.android.internal.jank.InteractionJankMonitor import com.android.internal.jank.InteractionJankMonitor
import java.util.LinkedList import java.util.LinkedList
import kotlin.math.min import kotlin.math.min
import kotlin.math.roundToInt
private const val TAG = "GhostedViewLaunchAnimatorController" private const val TAG = "GhostedViewLaunchAnimatorController"
@@ -50,7 +51,9 @@ private const val TAG = "GhostedViewLaunchAnimatorController"
* Note: Avoid instantiating this directly and call [ActivityLaunchAnimator.Controller.fromView] * Note: Avoid instantiating this directly and call [ActivityLaunchAnimator.Controller.fromView]
* whenever possible instead. * whenever possible instead.
*/ */
open class GhostedViewLaunchAnimatorController @JvmOverloads constructor( open class GhostedViewLaunchAnimatorController
@JvmOverloads
constructor(
/** The view that will be ghosted and from which the background will be extracted. */ /** The view that will be ghosted and from which the background will be extracted. */
private val ghostedView: View, private val ghostedView: View,
@@ -146,7 +149,8 @@ open class GhostedViewLaunchAnimatorController @JvmOverloads constructor(
val gradient = findGradientDrawable(drawable) ?: return 0f val gradient = findGradientDrawable(drawable) ?: return 0f
// TODO(b/184121838): Support more than symmetric top & bottom radius. // TODO(b/184121838): Support more than symmetric top & bottom radius.
return gradient.cornerRadii?.get(CORNER_RADIUS_TOP_INDEX) ?: gradient.cornerRadius val radius = gradient.cornerRadii?.get(CORNER_RADIUS_TOP_INDEX) ?: gradient.cornerRadius
return radius * ghostedView.scaleX
} }
/** Return the current bottom corner radius of the background. */ /** Return the current bottom corner radius of the background. */
@@ -155,7 +159,8 @@ open class GhostedViewLaunchAnimatorController @JvmOverloads constructor(
val gradient = findGradientDrawable(drawable) ?: return 0f val gradient = findGradientDrawable(drawable) ?: return 0f
// TODO(b/184121838): Support more than symmetric top & bottom radius. // TODO(b/184121838): Support more than symmetric top & bottom radius.
return gradient.cornerRadii?.get(CORNER_RADIUS_BOTTOM_INDEX) ?: gradient.cornerRadius val radius = gradient.cornerRadii?.get(CORNER_RADIUS_BOTTOM_INDEX) ?: gradient.cornerRadius
return radius * ghostedView.scaleX
} }
override fun createAnimatorState(): LaunchAnimator.State { override fun createAnimatorState(): LaunchAnimator.State {
@@ -174,9 +179,13 @@ open class GhostedViewLaunchAnimatorController @JvmOverloads constructor(
ghostedView.getLocationOnScreen(ghostedViewLocation) ghostedView.getLocationOnScreen(ghostedViewLocation)
val insets = backgroundInsets val insets = backgroundInsets
state.top = ghostedViewLocation[1] + insets.top state.top = ghostedViewLocation[1] + insets.top
state.bottom = ghostedViewLocation[1] + ghostedView.height - insets.bottom state.bottom =
ghostedViewLocation[1] + (ghostedView.height * ghostedView.scaleY).roundToInt() -
insets.bottom
state.left = ghostedViewLocation[0] + insets.left state.left = ghostedViewLocation[0] + insets.left
state.right = ghostedViewLocation[0] + ghostedView.width - insets.right state.right =
ghostedViewLocation[0] + (ghostedView.width * ghostedView.scaleX).roundToInt() -
insets.right
} }
override fun onLaunchAnimationStart(isExpandingFullyAbove: Boolean) { override fun onLaunchAnimationStart(isExpandingFullyAbove: Boolean) {

View File

@@ -1,6 +1,5 @@
+packages/SystemUI +packages/SystemUI
-packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt -packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt
-packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt
-packages/SystemUI/animation/src/com/android/systemui/animation/TextAnimator.kt -packages/SystemUI/animation/src/com/android/systemui/animation/TextAnimator.kt
-packages/SystemUI/animation/src/com/android/systemui/animation/TextInterpolator.kt -packages/SystemUI/animation/src/com/android/systemui/animation/TextInterpolator.kt
-packages/SystemUI/animation/src/com/android/systemui/animation/ViewHierarchyAnimator.kt -packages/SystemUI/animation/src/com/android/systemui/animation/ViewHierarchyAnimator.kt