Monzo 是一家提供数字金融服务的银行和应用。他们的使命是让金钱为每个人服务。Monzo 的设计系统开始偏离 Material Design,因此他们希望有一种**轻松的方式来编写和维护不断发展的自定义组件**,因此他们选择了 Jetpack Compose。
他们做了什么
在 Compose 中,Material Design 组件作为设计系统无关的基础 API 之上的一个层级提供。Monzo 使用基础 API 构建了自己的组件库,并参考 Material 组件。他们首先一次迁移一个屏幕,现在在所有新屏幕中使用 Compose。现在,所有 Android 工程师都在生产环境中使用 Compose:“我们没有遇到任何重大问题,因此我们很有信心开始将其用于一些选定的新功能,并最终用于所有新功能。”
结果
Monzo 团队创建了使他们能够轻松构建新屏幕的组件:“我们提供的开箱即用组件使在学习 Compose 时构建屏幕的**体验更加流畅**。基于插槽的 API 是一种极好的模式,使我们能够轻松地将大量小型构建块组合成更大的组件。”
使用 Compose,Monzo 团队能够构建更高质量的应用,并添加了以前无法在冲刺中实现的令人愉悦的功能:“一个例子是动画 - 在 Compose 中添加动画非常容易,以至于**几乎没有理由不为颜色/大小/海拔变化等内容添加动画**。在 View 系统中,这些“锦上添花”的动画通常过于复杂,不值得付出努力。”
他们的代码现在更简洁,也更容易阅读、理解和维护:“声明式代码比操作可变 UI 层级结构的代码**更容易推理**。当所有代码都用相同的语言(通常在同一个文件中)编写时,**追踪代码也更容易**,而不是在 Kotlin 和 XML 之间来回跳转。更别提 XML 主题和样式了!在 Compose 中,**主题更容易理解**。我们的主题只包含我们定义的属性,值在所有设备上保持一致,而且由于它在 Kotlin 中,因此在 IDE 中搜索和跟踪非常容易。”
Compose 允许 Monzo 团队轻松测试他们的应用并确保其应用可访问:“它帮助我们**编写更健壮、运行可靠且让我们更有信心**的测试,确保我们的应用在用户手中真正有效。通过语义系统进行测试还可以确保我们的屏幕至少在**默认情况下是可访问的**。”
开始使用
了解更多关于 Compose 的信息。