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