Monzo 是一家银行,并提供数字金融服务。他们的使命是向每个人传授生财之道。Monzo 的设计系统开始偏离 Material Design,因此他们希望找到一种简单的方法来编写和维护不断发展的自定义组件,于是选择了 Jetpack Compose。
策略
在 Compose 中,Material Design 组件作为一层位于与设计系统无关的基础 API 之上。Monzo 使用基础 API 构建了自己的组件库,并以 Material 组件作为参考。他们最初一次迁移一个界面,现在所有新界面都使用 Compose。 现在,所有 Android 工程师都在生产环境中使用 Compose:“我们没有遇到任何重大问题,因此我们有足够的信心开始将其用于一些精选的新功能,最终用于所有新功能。”
结果
Monzo 团队创建了可帮助他们轻松构建新界面的组件:“我们提供的开箱即用型组件让您在学习 Compose 的同时,更顺畅地构建界面。基于 slot 的 API 是一种出色的模式,可让我们轻松地使用许多小型构建块来构建大型组件。”
借助 Compose,Monzo 团队能够构建更高质量的应用,并添加之前在冲刺阶段无法实现的出色功能:“例如动画,在 Compose 中添加动画非常简单,几乎没有理由不为颜色/大小/高度变化等内容添加动画。这些“锦上添花”的动画往往过于复杂,不值得在视图系统中投入相应精力和复杂性。”
他们的代码现在更短,并且更易于阅读、理解和维护:“与操纵可变界面层次结构的代码相比,声明式代码更易于推断。当所有代码都使用同一种语言编写并且通常位于同一文件中(而不是在 Kotlin 和 XML 语言之间来回切换)时,跟踪代码也变得更容易。我甚至不想再提 XML 主题和样式了!在 Compose 中,主题设置更容易理解。我们的主题仅包含我们定义的属性,这些属性的值在不同设备上保持一致,而且由于它是用 Kotlin 编写的,因此在 IDE 中非常容易搜索和跟踪。”
借助 Compose,Monzo 团队可以轻松测试其应用并确保应用可访问:“它帮助我们编写了不太容易出错、运行可靠且让我们非常有信心的应用测试,确保我们的应用在用户手中正常运行。通过语义系统进行测试还可以确保我们的屏幕至少在默认情况下具有合理的无障碍功能。”
开始使用
详细了解 Compose。