修复首次启动切换年视图无动画问题

通过 withFrameNanos 在动画前预留一帧,让年视图先完成首次合成与
布局,避免 HorizontalPager + YearGridView 的初次合成开销吃掉动
画时间段。与之前的「常驻合成」方案相比,本次只调时序、不动渲染
结构,因此不会再触发年视图层在隐藏时拦截触摸事件的回归。
This commit is contained in:
meyou 2026-05-16 17:27:39 +08:00
parent c096651e0f
commit b730edc1eb

View File

@ -7,6 +7,7 @@ import androidx.compose.animation.core.tween
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.runtime.withFrameNanos
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
@ -101,6 +102,9 @@ class CalendarViewModel(
yearViewYear = selectedDate.year
isYearView = true
_yearViewAnimatable.snapTo(0f)
// 等待一帧让年视图先完成首次合成与布局,
// 避免首次进入年视图时动画时间被合成开销吞掉。
withFrameNanos { }
_yearViewAnimatable.animateTo(
1f, tween(400, easing = FastOutSlowInEasing)
)