JetPack Compose简单介绍

它是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文件

 

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

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

JetPack Compose简单介绍_第1张图片

 

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

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

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

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

(2)去掉了xml

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

你可能感兴趣的:(JetPack,Compose,android,ui)