summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-02-24 07:41:06 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-24 07:41:06 -0800
commite282072383a82df6a31d1bbed9a9b0aceca4817d (patch)
tree6ea6a18761213ff297d917d57329d7ab7aa0f06a
parentd97990e88e88ed475fd5b01f9aa0ddbce6170f2f (diff)
parenta7ba59c90b922222189b6a9ab18636d281157c2e (diff)
Merge "Fix new Expandable animation lag" into main
-rw-r--r--packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt4
-rw-r--r--packages/SystemUI/compose/core/src/com/android/compose/ui/graphics/DrawInOverlay.kt9
2 files changed, 8 insertions, 5 deletions
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt b/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt
index 873991923e51..1e3c4c9e7c09 100644
--- a/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt
@@ -314,7 +314,7 @@ private fun Modifier.expandable(
if (isAnimating) {
val graphicsLayer = rememberGraphicsLayer()
- FullScreenComposeViewInOverlay { view ->
+ FullScreenComposeViewInOverlay(controller.overlay) { view ->
Modifier.then(DrawExpandableInOverlayElement(view, controller, graphicsLayer))
}
@@ -397,7 +397,7 @@ private class DrawExpandableInOverlayNode(
}
override fun ContentDrawScope.draw() {
- val state = controller.animatorState ?: return
+ val state = controller.animatorState?.takeIf { it.visible } ?: return
val topOffset = state.top.toFloat() - composeViewLocationOnScreen[1]
val leftOffset = state.left.toFloat() - composeViewLocationOnScreen[0]
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/ui/graphics/DrawInOverlay.kt b/packages/SystemUI/compose/core/src/com/android/compose/ui/graphics/DrawInOverlay.kt
index 089da4b932b2..d5436d3aa89c 100644
--- a/packages/SystemUI/compose/core/src/com/android/compose/ui/graphics/DrawInOverlay.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/ui/graphics/DrawInOverlay.kt
@@ -47,15 +47,18 @@ fun Modifier.drawInOverlay(): Modifier {
}
@Composable
-internal fun FullScreenComposeViewInOverlay(modifier: (ComposeView) -> Modifier = { Modifier }) {
+internal fun FullScreenComposeViewInOverlay(
+ overlay: ViewGroupOverlay? = null,
+ modifier: (ComposeView) -> Modifier = { Modifier },
+) {
val context = LocalContext.current
val localView = LocalView.current
val compositionContext = rememberCompositionContext()
val displayMetrics = context.resources.displayMetrics
val displaySize = IntSize(displayMetrics.widthPixels, displayMetrics.heightPixels)
+ val overlay = overlay ?: localView.rootView.overlay as ViewGroupOverlay
- DisposableEffect(context, localView, compositionContext, displaySize) {
- val overlay = localView.rootView.overlay as ViewGroupOverlay
+ DisposableEffect(context, localView, overlay, compositionContext, displaySize) {
val view =
ComposeView(context).apply {
setParentCompositionContext(compositionContext)