Merge "Support Views that are scaled in GhostedViewLaunchAnimatorController" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7e758a4d25
@@ -36,6 +36,7 @@ import android.widget.FrameLayout
|
||||
import com.android.internal.jank.InteractionJankMonitor
|
||||
import java.util.LinkedList
|
||||
import kotlin.math.min
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
private const val TAG = "GhostedViewLaunchAnimatorController"
|
||||
|
||||
@@ -50,7 +51,9 @@ private const val TAG = "GhostedViewLaunchAnimatorController"
|
||||
* Note: Avoid instantiating this directly and call [ActivityLaunchAnimator.Controller.fromView]
|
||||
* 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. */
|
||||
private val ghostedView: View,
|
||||
|
||||
@@ -146,7 +149,8 @@ open class GhostedViewLaunchAnimatorController @JvmOverloads constructor(
|
||||
val gradient = findGradientDrawable(drawable) ?: return 0f
|
||||
|
||||
// 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. */
|
||||
@@ -155,7 +159,8 @@ open class GhostedViewLaunchAnimatorController @JvmOverloads constructor(
|
||||
val gradient = findGradientDrawable(drawable) ?: return 0f
|
||||
|
||||
// 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 {
|
||||
@@ -174,9 +179,13 @@ open class GhostedViewLaunchAnimatorController @JvmOverloads constructor(
|
||||
ghostedView.getLocationOnScreen(ghostedViewLocation)
|
||||
val insets = backgroundInsets
|
||||
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.right = ghostedViewLocation[0] + ghostedView.width - insets.right
|
||||
state.right =
|
||||
ghostedViewLocation[0] + (ghostedView.width * ghostedView.scaleX).roundToInt() -
|
||||
insets.right
|
||||
}
|
||||
|
||||
override fun onLaunchAnimationStart(isExpandingFullyAbove: Boolean) {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
+packages/SystemUI
|
||||
-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/TextInterpolator.kt
|
||||
-packages/SystemUI/animation/src/com/android/systemui/animation/ViewHierarchyAnimator.kt
|
||||
|
||||
Reference in New Issue
Block a user