Jetpack之使用 Jetpack Compose 更快地打造更出色的应用

纵观Android发展至今,十余年间Google一直在针对不同的主题对它进行整改补强,其目的就是为了给使用者提供一个更加稳定安全高效的系统,当然也给开发者们提供着一个日趋完善更加舒适高效的开发平台,更好地去实现各种功能!

可以看到在 UI 构建方面,基本上这么多年依赖并没有什么变化,就现在的发展趋势来说,传统的UI架构让很多开发者表示苦不堪言:UI 在构建上需要编写大量的模板代码。

大家都对自定义 View 比较熟悉,每次编写都要处理 onMeasure、onLayout、onDraw,在 onInterceptTouchEvent、onTouchEvent 中处理各种手势分发,此外我们还需要根据 attrs.xml 等支持好自定义属性,可以说繁琐至极。如果想在现有组件上去做重构,面对如此多的代码,几乎是天方夜谭。

Compose应运而生

无法优化重构,那么就只能创造新的架构来进行开发。自Flutter之后,Google也是在去年正式发布了Compose1.0。很多人可能都会有疑问:有了Flutter,为什么还要推出Compose?

 

虽然同为声明式UI,二者虽然比较相似,但究其根本定位还是不尽相同:

Flutter:作为一款专为跨平台而生的框架,从上到下都透露着大胆和创新,选择Dart语言。

图片

Flutter架构图

Compose:Compose则是一个全新的UI库,隶属Jetpack中的一员,它的出现是为了重新定义Android UI的开发方式,相比原生Android UI的开发方式,它大幅度提高了原生UI的开发效率:

  • 声明式UI,不需要手动刷新数据

  • 去掉XML,完全解除了混合写法(xml+Java、kotlin)的局限性

  • 超强兼容性,大多数常用库(如Navigation、ViewModel和Kotlin协程)都适用于Compose,Compose 能够与现有 View 体系并存,你可以为一个既有项目引入 Compose

  • 加速开发,提供了非常多开箱即用的Material 组件,如果的App是 遵循 Material Design的话,使用Jetpack Compose 能让你节省不少精力。

  • 精简代码数量,减少bug的出现

  • 功能完备,现阶段几乎可以完全覆盖Android现有视图系统的所有能力

  • 实时预览,Compose 预览机制可以做到与真机无异,真正的所见所即得

相比之下,二者的区别一目了然:如果想做一个多端跨平台开发者,那么Flutter会让你如虎添翼;想要继续扎根Android深耕细作,那么Compose更适合作为你学习的第一选择。

 

使用 Jetpack Compose 更快地打造更出色的应用

Jetpack Compose 是用于构建原生 Android 界面的新工具包。它可简化并加快 Android 上的界面开发,使用更少的代码、强大的工具和直观的 Kotlin API,快速让应用生动而精彩。

  • 更少的代码    

与使用 Android View 系统(按钮、列表或动画)相比,Compose 可让您使用更少的代码实现更多的功能。无论您需要构建什么内容,现在需要编写的代码都更少了。以下是我们的一些合作伙伴的感想:

“对于相同的 Button 类,代码的体量要小 10 倍。”(Twitter)

“使用 RecyclerView 构建的任何屏幕(我们的大部分屏幕都使用它构建)的大小也显著减小。”(Monzo)

““只需要很少几行代码就可以在应用中创建列表或动画,这一点令我们非常满意。对于每项功能,我们编写的代码行更少了,这让我们能够将更多精力放在为客户提供价值上。”(Cuvva)

编写代码只需要采用 Kotlin,而不必拆分成 Kotlin 和 XML 部分:“当所有代码都使用同一种语言编写并且通常位于同一文件中(而不是在 Kotlin 和 XML 语言之间来回切换)时,跟踪变得更容易”(Monzo)

无论您要构建什么,使用 Compose 编写的代码都很简洁且易于维护。“Compose 的布局系统在概念上更简单,因此可以更轻松地推断。查看复杂组件的代码也更轻松。”(Square)

  • 直观

Compose 使用声明性 API,这意味着您只需描述界面,Compose 会负责完成其余工作。这类 API 十分直观 - 易于探索和使用:“我们的主题层更加直观,也更加清晰。我们能够在单个 Kotlin 文件中完成之前需要在多个 XML 文件中完成的任务,这些 XML 文件负责通过多个分层主题叠加层定义和分配属性。”(Twitter)

利用 Compose,您可以构建不与特定 activity 或 fragment 相关联的小型无状态组件。这让您可以轻松重用和测试这些组件:“我们给自己设定的目标是,交付一组新的无状态界面组件,确保它们易于使用和维护,且可直观实现/扩展/自定义。就这一点而言,Compose 确实为我们提供了一个可靠的答案。”(Twitter)

在 Compose 中,状态是显式的,并且会传递给相应的可组合项。这样一来,状态便具有单一可信来源,因而是封装和分离的。然后,应用状态变化时,界面会自动更新。“在对某些内容进行推断时,不必处理太多信息,并且无法控制或难以理解的行为也更少”(Cuvva)

  • 加速开发

Compose 与您所有的现有代码兼容:您可以从 View 调用 Compose 代码,也可以从 Compose 调用 View。大多数常用库(如 Navigation、ViewModel 和 Kotlin 协程)都适用于 Compose,因此您可以随时随地开始采用。“我们一开始集成 Compose 是为了实现互操作性,并且这样确实‘行之有效’。我们发现,我们不必考虑浅色模式和深色模式等问题,整个体验无比顺畅。”(Cuvva)

借助全面的 Android Studio 支持以及实时预览等功能,您可以更快地迭代和交付代码:“Android Studio 中的预览功能极大地节省了我们的时间。能够构建多个预览也帮我们节省了时间。我们通常需要检查不同状态下或采用不同设置的界面组件(例如错误状态或采用不同的字体大小等)。由于能够创建多个预览,我们可以轻松执行这些检查。”(Squa

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值