- 年视图 beyondViewportPageCount 动画完成后再恢复为 1,消除切换后 283ms onMeasure 阻塞 - MiniMonth 主题色提取到 YearGridView 级别 remember 缓存(72 次 → 1 次读取) - TextMeasurer 从每 MiniMonth 独立实例改为 YearGridView 共享(12 个 → 1 个) - 预测量 1-31 × 3 颜色的 TextLayoutResult(93 个缓存),消除 360+ 次 measure() 调用 - 12 个月的 generateMiniMonthDays 在 YearGridView 级别预计算并缓存
YaYa
基于 Kotlin Multiplatform 与 Compose Multiplatform 的日历应用,Android 和 iOS 共享 UI。
月视图与周视图之间支持流畅的折叠/展开过渡——拖拽切换,弹簧动画自动吸附。无限分页,ISO 8601 周起始,Material 3。
构建
# Android
./gradlew :androidApp:assembleDebug
# iOS — 在 Xcode 中打开 iosApp/ 运行
技术栈
- Kotlin 2.3 · Compose Multiplatform 1.10 · Material 3
kotlinx-datetime处理所有日期逻辑- 双模块:
:shared(UI + 逻辑)·:androidApp(薄壳)
Description
Languages
Kotlin
77.3%
Shell
18.7%
PowerShell
4%