引言
compose 出现的目的: 重新定义android 上ui 的编写方式。为了提高android 原生ui开发效率。让android 的UI开发方式跟上时代。
正文
compose 是什么?
就是一套ui框架
和flutter 一样是一套ui框架 Flutter:跨平台开发趋势与企业应用的崛起-CSDN博客
为什么要新的ui框架?
老的ui存在的问题:
- view.java 类太大 ,这个类有30000行 ,而且每个android ui都要继承于view 。
- google 表示他们对已实现的一些api 无法在不破坏功能情况下收回、修复或者扩展api 。
- 当前ui开发不符合现在开发习惯(响应式编程思想的 声明式ui)
compose存在的优势
compose是声明式ui 。
声明式ui和命令式ui的差别
声明式ui :自动更新
命令式ui : 手动更新
compose和databinding区别
databinding data -> ui data 改变 View属性
compose data -> ui属性 .ui结构
优势
1、早期 activity data的设置是要 findViewById XXX ,比较麻烦。 compose 就不需要这些了。
2、声明式UI,数据驱动ui(把我们前端思想引入了,databinding就是借鉴了前端vue。react思想)
3、view 控件,内容多且不好扩展。 compose非常轻量且易扩展。compose ui通过layoutNode 来形成树结构。
组合替代了继承
这是最重要的改变 (整个ui思想的改变)
我们以前ui 都是继承 view 。这里存在一个缺陷就是引言里面说的,父类的特性写好了,就无法改变了。
组合,就可以解决这个问题,A 里面是B.C 组合。如果我觉得B 不好,我想剔除B改为D,可以随时替换。 这时候优势就体现出来了: 颗粒度比较细,可随时替换。
compose 是否完全抛弃了View 和ViewGroup ?
没有完全抛弃,也是继承自ComposeView, compose 也是继承contentView ,contentView 继承DecorView ,D 继承Window窗体,最后Activity。
so : AndroidComposeView 是创世主,创建了compose世界。
如图:
结束。