Compose Symphony 致力于弥合 Android 与现代高端交互设计(如 iOS 风格)之间的差距。拒绝生硬的匀速运动,它开箱即用地提供了“有机”的手感、真实的物理阻尼以及令人惊叹的粒子视觉效果。
| 想要达成什么效果? | 推荐组件 | 核心文件 |
|---|---|---|
| 🍬 给按钮加点“果冻”感 | bouncyClickable |
SpringAnimations.kt |
| 🧲 丝滑的拖拽吸附 | DampedDrag |
DampedDrag.kt |
| ⚛️ 灭霸式粒子消散 | DissolveEffect |
DissolveEffect.kt |
| 🎉 庆祝与爆炸动效 | Celebration |
Celebration.kt |
| 特性 | 描述 | 关键优势 |
|---|---|---|
| 🌊 液态物理 | physics |
深度模拟 iOS 滚动视图的指数级阻力曲线,拖拽时手感“黏”且顺滑。 |
| ⚛️ 粒子引擎 | particle |
基于 OpenGL 的高性能粒子系统,可让任何 Composable 瞬间化为粉尘。 |
| 🍎 iOS 调优 | animation |
内置 Apple Music/App Store 同款弹簧参数 (Spring Specs),告别猜数字调参。 |
| 🎨 微交互 | interaction |
提供点赞爆炸、3D 投币翻转等即插即用的微交互组件。 |
Tip
设计哲学:所有的动画参数都经过精心调优,默认值即是舒适的体验(Sensible Defaults)。您只需接入,不仅“能动”,而且“好动”。
(发布到 Maven Central 暂定中。目前推荐作为本地模块引入以方便二次修改)
-
Clone 本仓库。
-
在
settings.gradle.kts中引入:include(":compose-symphony") project(":compose-symphony").projectDir = file("path/to/Compose-Symphony/library")
-
在您的应用
build.gradle.kts中添加依赖:implementation(project(":compose-symphony"))
只需一行代码,让按钮拥有 Apple Music 般的点击质感。
Box(
modifier = Modifier
.clip(RoundedCornerShape(12.dp))
.bouncyClickable(scaleDown = 0.92f) { // 👈 Just add this!
// Click Action
}
) {
Text("Press Me")
}包裹任何内容,通过 isDissolving 状态触发粒子化。
DissolvableVideoCard(
isDissolving = isDissolving,
onDissolveComplete = { /* 动画结束回调 */ }
) {
// 任何复杂的 Composable 内容...
VideoPlayer(...)
}"Standing on the shoulders of giants."
本项目在开发过程中,参考了以下优秀的开源项目和设计规范:
| 灵感源泉 (Muse) | 技术基石 (Foundation) |
|---|---|
| 🍎 Apple Human Interface Guidelines 提供了极具参考价值的动效规范 |
🤖 Jetpack Compose 让一切创意成为现实的现代画布 |
| ☁️ Haze (Chris Banes) 优秀的 Compose 模糊效果参考 |
🌊 BiliPai 本项目核心代码的来源与验证环境 |
Licensed under MIT