修复首次启动切换年视图无动画问题
通过 withFrameNanos 在动画前预留一帧,让年视图先完成首次合成与 布局,避免 HorizontalPager + YearGridView 的初次合成开销吃掉动 画时间段。与之前的「常驻合成」方案相比,本次只调时序、不动渲染 结构,因此不会再触发年视图层在隐藏时拦截触摸事件的回归。
This commit is contained in:
parent
c096651e0f
commit
b730edc1eb
@ -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)
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user