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 的信息。