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”的区别关键就在于:是否需要去手动刷新数据
传统的UI方法需要我们去调用setXXX方法去更新数据,而compose不用
所以,compose的优势就在于,它是一个完全的声明式UI,我们只管把界面声明出来后,当数据变化时,我们不用手动去更新,它会自己帮我们更新数据,并显示最新的数据,省去了我们去做界面更新的工作。
传统 UI 能做到的事,Compose 都是可以做到的:比如自定义绘制、自定义布局、自定义触摸,还有动画,Compose 都是可以做到的。
(2)去掉了xml
这是compose的第二个优势,它抛弃了 xml 的同时还保持了写法的简单,完全解除了混合写法(xml+Java、kotlin)所带来的局限性,让我们写Ui更快速。
二、Compose API 的原则
1.一切都是函数
2.顶层函数(Top-level function)
3.组合优于继承
4.信任单一来源