Monzo 使用 Compose 构建更强大、更优质的应用

Monzo 是一家银行,并提供同名应用,仅在移动设备上提供 数字金融服务。他们的使命是向每个人传授生财之道。Monzo 的设计系统开始偏离 Material Design,因此他们需要一种简单的方式来编写和维护不断演变的自定义组件 ,于是他们选择了 Jetpack Compose。

策略

借助 Compose,Material Design 组件以层的方式提供,位于与设计系统无关的基础 API 之上。Monzo 使用基础 API 构建了自己的组件库,并以 Material 组件作为参考。他们首先一次迁移一个界面,现在所有新界面都使用 Compose。现在,所有 Android 工程师都在生产环境中使用 Compose:“我们没有遇到任何重大问题,因此我们有足够的信心开始将 Compose 用于一些精选的新功能,最终用于所有新功能。”

结果

Monzo 团队创建了组件,使他们能够轻松构建新界面:“我们提供的开箱即用型组件使您在学习 Compose 时能够更顺畅地构建界面。基于槽位的 API 是一种 出色的模式,可让我们轻松地使用许多小构建块来构建更大的组件 。”

借助 Compose,Monzo 团队能够构建质量更高的应用,并添加之前在冲刺中无法实现的出色功能:“例如动画,在 Compose 中添加动画效果非常简单,没有理由不去为颜色/大小/高度变化添加动画效果。这些‘锦上添花’的动画通常过于复杂,不值得在 View 系统中付出 努力。”

他们的代码现在更短,并且更易于阅读、理解和 维护:“与操纵可变界面层次结构的代码相比,声明式代码更容易推理。当所有代码都使用同一种语言编写并且通常位于同一文件中(而不是在 Kotlin 和 XML 语言之间来回切换)时,跟踪变得更容易 。别让我再提 XML 主题和样式了!在 Compose 中,主题更容易理解 。我们的主题 仅包含我们定义的属性,这些值在不同设备上保持一致,并且由于它是用 Kotlin 编写的,因此在 IDE 中非常容易搜索和跟踪。”

借助 Compose,Monzo 团队可以轻松测试其应用并确保其应用具有 无障碍功能:“它帮助我们 编写了更可靠、运行更可靠的测试, 并让我们有足够的信心,确保我们的应用在用户手中能够正常 运行。通过语义系统进行测试还可以确保我们的界面 至少在默认情况下具有合理的无障碍功能。”

开始使用

详细了解 Compose