预计算固定 dp→px 转换,避免每帧重复 density 计算
cardGapExpandedPx/cardGapCollapsedPx/rowPaddingPx/horizontalPaddingPx 移入 remember,每帧只做一次浮点插值而非完整 density 转换。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
3b3988251a
commit
d5b7d2cd8a
@ -138,14 +138,12 @@ fun CalendarMonthView(
|
||||
|
||||
val collapseProgress = viewModel.collapseProgress
|
||||
val headerHeightPx = monthHeaderHeightPx + weekdayHeaderHeightPx
|
||||
val rowPaddingPx = with(density) { ROW_PADDING_DP.dp.toPx() }.toInt()
|
||||
val cardGapPx = with(density) {
|
||||
lerp(
|
||||
CARD_GAP_EXPANDED_DP.toFloat(),
|
||||
CARD_GAP_COLLAPSED_DP.toFloat(),
|
||||
collapseProgress
|
||||
).dp.toPx()
|
||||
}.toInt()
|
||||
|
||||
// 预计算固定 dp→px,避免每帧重复 density 转换
|
||||
val cardGapExpandedPx = remember { with(density) { CARD_GAP_EXPANDED_DP.dp.toPx() } }
|
||||
val cardGapCollapsedPx = remember { with(density) { CARD_GAP_COLLAPSED_DP.dp.toPx() } }
|
||||
val rowPaddingPx = remember { with(density) { ROW_PADDING_DP.dp.toPx() } }.toInt()
|
||||
val cardGapPx = lerp(cardGapExpandedPx, cardGapCollapsedPx, collapseProgress).toInt()
|
||||
|
||||
val interpolatedWeeks by remember {
|
||||
derivedStateOf {
|
||||
@ -162,11 +160,13 @@ fun CalendarMonthView(
|
||||
}
|
||||
}
|
||||
|
||||
// 预计算固定 dp→px,避免每帧重复 density 转换
|
||||
val horizontalPaddingPx = remember { with(density) { (HORIZONTAL_PADDING_DP * 2).dp.toPx() } }
|
||||
val rowPadding2Px = remember { with(density) { (ROW_PADDING_DP * 2).dp.toPx() } }
|
||||
|
||||
val estimatedRowHeightPx = if (screenWidthPx > 0) {
|
||||
val cellWidth =
|
||||
(screenWidthPx - with(density) { (HORIZONTAL_PADDING_DP * 2).dp.toPx() }) / 7
|
||||
val rowPadding = with(density) { (ROW_PADDING_DP * 2).dp.toPx() }
|
||||
(cellWidth + rowPadding).toInt()
|
||||
val cellWidth = (screenWidthPx - horizontalPaddingPx) / 7
|
||||
(cellWidth + rowPadding2Px).toInt()
|
||||
} else 0
|
||||
|
||||
val effectiveRowHeightPx = if (rowHeightPx > 0) rowHeightPx else estimatedRowHeightPx
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user