Jetpack Compose 最新进展,你真的了解Android系统启动流程吗

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

时间让我们回到5个月前的 I/O 大会,当时演讲者为大家分享了这样一张图,这是一张 Android 10 年里的简要发展历史,在长达 10 年的发展过程中,Google 针对不同的问题做出了很多的调整,但是唯独在 UI 构建方面,最初的那一套 UI 构建体系一直沿用至今,几乎没有做任何调整。

虽然 Google 移除了 Support 库,引入了全新的 AndroidX,解决了 Android 由于版本兼容衍生出的 API 混乱的问题,但 UI 构建的本质没有改变。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是 View.java 类,你可以看到这个类已经庞大到 30000 行代码了,同时整个 UI 构建都是基于【继承】所实现的,Widget 继承 View,Layout 继承 ViewGroup,ViewGroup 继承 View 等等,一直以来这样的构建方式其实都有着开发上的不便捷以及性能上的损耗。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

例如我们都知道 Button 继承自 TextView,理论上我们只需要一个文本 + 可点击的区域就可以了,但是由于 TextView 的特性,它本身是可以长按出现复制、选择功能的,但是我一个 Button 要这些功能有什么用呢?应该不会有产品或者设计会需要我们做一个可以复制剪切文本的 Button 吧?同学们应该听过一句话就是:组合优于继承,同样这也是 Jetpack Compose 的核心,所有的 UI 都是通过组合实现,不存在继承关系。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

并且以目前的 UI 构建方式来说,我们需要写大量的代码,写一个自定义 View 需要实现测量和布局,响应用户的行为需要实现大量的 Listener 事件,同时还要配合 XML 自定义属性,真的是非常繁琐。而且以目前的代码量体积来说,想要优化重构是完全不现实的,只有发布一个全新的 UI 构建库,才能从根本上解决问题,所以 Google 推出了全新的 Android UI 组件库 Jetpack Compose。

所以基于以上种种原因,Jetpack Compose 试图改变原有的 UI 构建方式,同时为大家带来以下 4 点全新的改变。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. UI 的变化更新不再跟随 Android 大版本的发布而更新
  2. 编写 UI 代码不需要掌握庞大繁琐的技术栈
  3. 简单直接的状态控制以及用户行为处理
  4. 使用更少的代码来编写 UI

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

全新的 Jetpack Compose 受到了 React、Litho、Vue、Flutter 的启发,采取声明式的编写方式,完全采用 Koltin 开发,而且与现有的 Android 视图体系完全兼容。

那么说了这么多 Jetpack Compose 的代码长什么样子呢?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如图所示,首先我们要定义一个方法并使用 @Composable 标记,方法中声明我们的布局是纵向的(Column),并且四周有 16dp 的间距(Spacing),布局内容是三个纵向排列的文本(Text),就这么简单,不需要 xml 代码,所见即所得,而且这个 @Composable 方法可以写在任一文件中,不需要强制定义在 Activity 中。Jetpack Compose 除了支持 Column、Row、Flex 等布局方式以外,同样支持 ConstrainLayout 约束布局方式,在不久的将来会更新出来。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Jetpack Compose 内置了多种 Material Design 默认样式,例如 Text 默认 h1、h2、title、body 的字体效果、Button 默认的圆角、线框、无边框显示效果等等,同样 Jetpack Compose 支持 DarkTheme(暗色主题)的配置。

说了这么多,我们来看一下从 API 的角度,Jetpack Compose 由哪几部分构成:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. Compose UI Core 提供了核心部分包括:输入、测量、布局、绘制
  2. Compose UI Foundatuin 提供了标准布局以及交互的定义
  3. Compose UI Material 提供了完整的 Material Design 组件

除了内置的 UI 组件之外,Jetpack Compose 中实现自定义 View 的过程也非常简单,我们只需要关注 Draw 和 Layout 这两个方法就好了,这里我绘制了一个错误框,粉色的背景+白色的X,过程和之前一样,还是经过 measure、layout、draw ,但在写法上非常精简。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

加下面V无偿领取!(备注Android)**
[外链图片转存中…(img-F84jsv55-1710926884759)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值