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