From e175bb07da9bd4e48ce2f8b49baab0505a338334 Mon Sep 17 00:00:00 2001 From: xfy Date: Mon, 25 May 2026 16:38:04 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20WeekRow=20=E6=94=B9=E7=94=A8=20graphics?= =?UTF-8?q?Layer=20=E9=81=BF=E5=85=8D=E6=8A=98=E5=8F=A0=E5=8A=A8=E7=94=BB?= =?UTF-8?q?=E9=87=8D=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 offset() + alpha() 替换为 graphicsLayer { translationY / alpha }, collapseProgress 变化时跳过 Composition/Layout,仅更新 Draw 阶段。 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../main/kotlin/plus/rua/project/ui/CalendarMonthPage.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthPage.kt b/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthPage.kt index d7748e2..c93af5d 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthPage.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/CalendarMonthPage.kt @@ -15,8 +15,7 @@ import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clipToBounds -import androidx.compose.ui.draw.alpha -import androidx.compose.foundation.layout.offset +import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp @@ -209,8 +208,10 @@ private fun WeekRow( if (isAnchor && phase1 >= 1f) Modifier.background(MaterialTheme.colorScheme.surface) else Modifier ) - .offset(y = with(density) { yOffsetPx.toDp() }) - .alpha(rowAlpha) + .graphicsLayer { + translationY = yOffsetPx + this.alpha = rowAlpha + } .then( if (weekIndex == 0 && rowHeightPx == 0) { Modifier.onSizeChanged { size ->