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

This reverts commit 216ebbf990555f8282371199b8d1cc4bb86d9b2e.
This commit is contained in:
meyou 2026-05-16 17:02:45 +08:00
parent 216ebbf990
commit c096651e0f

View File

@ -270,45 +270,47 @@ fun CalendarMonthView(
} }
} }
// 年视图层:始终组合以避免首次进入时的组合延迟导致动画丢失 // 年视图层HorizontalPager 支持左右滑动切年
HorizontalPager( if (viewModel.isYearView || yearProgress > 0.01f) {
state = yearPagerState, HorizontalPager(
beyondViewportPageCount = 1, state = yearPagerState,
flingBehavior = PagerDefaults.flingBehavior(state = yearPagerState), beyondViewportPageCount = 1,
modifier = Modifier flingBehavior = PagerDefaults.flingBehavior(state = yearPagerState),
.fillMaxSize() modifier = Modifier
.graphicsLayer { .fillMaxSize()
scaleX = yearScale .graphicsLayer {
scaleY = yearScale scaleX = yearScale
alpha = yearAlpha scaleY = yearScale
transformOrigin = TransformOrigin(anchorPivotX, anchorPivotY) alpha = yearAlpha
} transformOrigin = TransformOrigin(anchorPivotX, anchorPivotY)
.padding(horizontal = HORIZONTAL_PADDING_DP.dp)
) { page ->
val pageYear = viewModel.selectedDate.year + (page - START_PAGE)
YearGridView(
year = pageYear,
selectedMonth = if (pageYear == currentYear) currentMonth else 0,
today = today,
onMonthClick = { month ->
viewModel.selectMonthFromYearView(month)
@Suppress("DEPRECATION") // monthNumber 无替代 API
val targetPage = yearMonthToPage(
viewModel.yearViewYear, month,
today.year, today.month.number
)
if (targetPage != pagerState.currentPage) {
coroutineScope.launch { pagerState.scrollToPage(targetPage) }
} }
}, .padding(horizontal = HORIZONTAL_PADDING_DP.dp)
onYearChange = { newYear -> ) { page ->
val offset = newYear - pageYear val pageYear = viewModel.selectedDate.year + (page - START_PAGE)
val targetPage = yearPagerState.currentPage + offset YearGridView(
if (targetPage != yearPagerState.currentPage) { year = pageYear,
coroutineScope.launch { yearPagerState.animateScrollToPage(targetPage) } selectedMonth = if (pageYear == currentYear) currentMonth else 0,
today = today,
onMonthClick = { month ->
viewModel.selectMonthFromYearView(month)
@Suppress("DEPRECATION") // monthNumber 无替代 API
val targetPage = yearMonthToPage(
viewModel.yearViewYear, month,
today.year, today.month.number
)
if (targetPage != pagerState.currentPage) {
coroutineScope.launch { pagerState.scrollToPage(targetPage) }
}
},
onYearChange = { newYear ->
val offset = newYear - pageYear
val targetPage = yearPagerState.currentPage + offset
if (targetPage != yearPagerState.currentPage) {
coroutineScope.launch { yearPagerState.animateScrollToPage(targetPage) }
}
} }
} )
) }
} }
// BottomCard年视图时隐藏 // BottomCard年视图时隐藏