当前位置: 首页 > news >正文

Compose 的产生和原理

引言

compose 出现的目的:  重新定义android 上ui 的编写方式。为了提高android 原生ui开发效率。让android 的UI开发方式跟上时代。

正文

compose 是什么?

就是一套ui框架

和flutter 一样是一套ui框架 Flutter:跨平台开发趋势与企业应用的崛起-CSDN博客

为什么要新的ui框架?

老的ui存在的问题:

  1. view.java 类太大 ,这个类有30000行 ,而且每个android ui都要继承于view 。
  2. google 表示他们对已实现的一些api 无法在不破坏功能情况下收回、修复或者扩展api 。
  3. 当前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世界。

如图:

结束。

相关文章:

  • MySQL超详细介绍(近2万字)
  • 穆迪暖色调人像静物摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 生成PDF文件:从html2canvas和jsPdf渲染到Puppeteer矢量图
  • Android Handler 通过线程安全的 MessageQueue 和底层唤醒机制实现跨线程通信
  • 【嵌入式学习】如何利用gitee管理记录学习内容
  • 多线程—进程与线程
  • 【软考-架构】8.2、开发方法-TPC-MIS-DSS
  • RSI 量化策略实战指南:基于 iTick 报价源的 Python 实现
  • 卷积神经网络 - 卷积层
  • 库的制作与原理 linux第课
  • LORA的AB矩阵是针对Transformer的多头还是MLP
  • 台式机电脑组装---电脑机箱与主板接线
  • 线程池的拒绝策略适用场景思考
  • 网络编程套接字【端口号/TCPUDP/网络字节序/socket编程接口/UDPTCP网络实验】
  • 双曲空间学习记录
  • TypeScript Symbols 深度解析:在 Vue3 中的高级应用实践
  • 人脸识别-检测数据集
  • C++ :顶层const与底层const的区别
  • 【Linux网络(三)】网络基础套接字
  • 【CXX-Qt】1.5 使用CMake构建
  • 中国海警依法驱离日非法进入我钓鱼岛领海船只
  • “三德子”赵亮直播间卖“德子土鸡”,外包装商标实为“德子土”
  • 著名国际关系理论家、“软实力”概念提出者约瑟夫•奈逝世
  • 是否有中国公民受印巴冲突影响?外交部:建议中国公民避免前往冲突涉及地点
  • 福特汽车撤回业绩指引,警告关税或造成15亿美元利润损失
  • 《黎明的一切》:与正常世界脱轨后,我选择不再回去