它是2019 年 I/O 大会上公布的新的 UI 库,在今年下半年会发布它的正式版。

既然它是一个UI库,那就要和我们传统写UI的方式作对比了。

①传统写UI的方式:就是先在建立一个xml文件,在里面写好布局好,再回到Java文件(或者是Kotlin文件)里去把控件实例化出来后,再去调用。

②Compose这个库:或者说它是一个框架,它重新定义了Android UI的写法,不再使用xml文件了,而是直接在Kotlin文件(只支持Kotlin)里,写布局的代码。官方对Compose的评价是“让困难的事情变简单,让不可能的事情变得有可能”。

官方对它评价这么高,那我们就来认识认识这个compose。

Compose相对于传统的UI写法,它有两个优势:

(1)它是声明式UI

大家都会把我们以前传统的UI方法,叫做是“命令式UI”,而把compose叫做是“声明式UI”。那这个“命令式”跟“声明式”该怎么理解呢?好,我们先来实现一个功能,通过这个实现功能的过程,能更好的理解这两个概念:有两个按钮,第一个按钮是每按一次让数字加1,另一个按钮是每按一次让数字加1。

传统UI写法(伪代码):

//xml文件
<LinearLayout><Button/>
<Button/>
<TextView/></LinearLayout>//java(kotlin)文件
findViewById(***)
setOnClickListener(***)
setText(***)

“命令式UI”跟“声明式UI”的区别关键就在于:是否需要去手动刷新数据

传统的UI方法需要我们去调用setText方法去更新数据,而compose不用。

可能有些人会问,不是有Data Binding吗,它就可以实现数据的同步更新,那还要这个compose干嘛,我们再举一个例子:有一个按钮,它可以控制一张图片的显示或者隐藏。

在不手动调用 setVisibility方法前提下,Data Binding是做不到通过用布尔类型的数据来控制界面元素是否存在,而compose它可以:

所以,compose的优势就在于,它是一个完全的声明式UI,我们只管把界面声明出来后,当数据变化时,我们不用手动去更新,它会自己帮我们更新数据,并显示最新的数据,省去了我们去做界面更新的工作。

传统 UI 能做到的事,Compose 都是可以做到的:比如自定义绘制、自定义布局、自定义触摸,还有动画,Compose 都是可以做到的。

(2)去掉了xml

这是compose的第二个优势,它抛弃了 xml 的同时还保持了写法的简单,完全解除了混合写法(xml+Java、kotlin)所带来的局限性,让我们写Ui更快速。

JetPack Compose简单介绍相关推荐

  1. Jetpack Compose详尽介绍

    概览 Compose提供了多个api用来实现各种手势,这些手势包括点击.按压.双击.长按.水平垂直滑动.拖动.双指平移缩放旋转.嵌套欢动效果 各种手势效果介绍 点击手势 代码 Box(modifier ...

  2. jetpack compose原理解析

    目录 jetpack compose原理解析 jetpack compse 声明式ui开发 原理分析 整体框架介绍 compose LayoutNode布局介绍 @Composeable注解实现细节 ...

  3. Jetpack Compose入门篇-简约而不简单

    好文推荐: 作者:QiShare Compose简介 Jetpack Compose:利用声明式编程构建Android原生界面(UI)的 工具包 优势 更少的代码.代码量锐减 强大的工具/组件支持 直 ...

  4. Android Jetpack Compose——一个简单的微信界面

    一个简单的微信界面 简述 效果视频 底部导航栏 导航元素 导航栏 放入插槽 绘制地图 消息列表 效果图 实现 聊天 效果图 实现 气泡背景 联系人界面 效果图 实现 好友详情 效果图 实现 发现 效果 ...

  5. Jetpack Compose Animations 超简单教程

    Node:本文基于Jetpack Compose 1.0.0-beta01 Animation是由state驱动的 Compose的核心思想状态驱动UI刷新,这一思想同样体现在动画上. Compose ...

  6. Jetpack Compose入门详解(实时更新)

    Jetpack Compose入门详解 前排提醒 前言(Compose是什么) 1.实战准备 一.优势与缺点 二.前四课 三.标准布局组件 1.Column 2.Row 3.Box 四.xml和com ...

  7. Jetpack Compose 从入门到入门(六)

    本篇说说Compose中的Canvas. 1. Canvas @Composable fun Canvas(modifier: Modifier,onDraw: DrawScope.() -> ...

  8. Jetpack Compose for Desktop: 里程碑1发布

    在深入详解 Jetpack Compose | 优化 UI 构建 中谷歌介绍了为什么要设计 Jetpack Compose 来完成原生 Android 的开发,如今 Jetpack Compose f ...

  9. Jetpack Compose中的手势操作

    点击事件 监听点击事件非常简单,使用 clickable 和 combinedClickable 修饰符即可满足需求: @OptIn(ExperimentalFoundationApi::class) ...

最新文章

  1. 2.6 datetime 模块
  2. QT串口2--控制GSM模块的使用
  3. JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)
  4. [Leetcode][第546题][JAVA][移除盒子][递归][动态规划]
  5. 性能测试需求调研分析方法
  6. Kuboard云原生管理工具
  7. Android之eclipse简单NDK入门
  8. 专题:CentOS社区企业操作系统
  9. java,类的构造方法
  10. MySQL 读写分离 部分_一个完整的mysql读写分离环境包括以下几个部分
  11. java压缩单个文件
  12. C++中的explicit、implicit关键字
  13. 禁用计算机声卡设备,电脑声音被禁用了怎么办
  14. 儿童讲堂 - 量词的解释
  15. 【obs】转载:OBS直播严重延迟和卡顿怎么办?
  16. Unity 拖动UI物体(干货)
  17. php webshell 分析,一款奇葩的PHP Webshell后门分析
  18. Python番外篇:电脑读心术程序 快给你的同事朋友玩一玩
  19. 卡巴斯基KAV2013 – 免费一年 (六一活动)
  20. 前端如何获取电池信息?

热门文章

  1. req.getRequestDispatch与resp.sendRedirect跳转方式
  2. 20200728-直接提取压缩包里的文件
  3. web前端中快速切换图片实现视频播放效果
  4. 10大H5前端框架,让你开发不愁
  5. 基于netcore的微服务——Polly(2)
  6. java删除字符串中指定字符串_java:删除字符串中指定字符串的方法
  7. c语言 怎么将字符串代入函数,通过函数名字符串调用函数【C语言版】
  8. java中finally什么时候执行_finally是否执行?finally何时执行?
  9. opencart设置后台中文
  10. 【日常修机】打印机故障维护