Jetpack Compose学习记录(一)

前言

学了一段时间的Compose,不得不说声明式UI比原生的开发效率快很多,而且Compose也是Google现在主推的开发模式,可以动态化地更改ui,相比于databinding对数据和布局进行绑定。Compose更近一步,界面上任一控件也可以动态地进行改变。在某些场景下,有些需要写多套布局,而Compose只需要写一套。
缺点个人认为也显而易见,虽然理论上可以实现几乎所有和原生一样的功能,但是比如RecyclerView这样的控件,Compose中的LazyColumn还是没有那么丝滑;还有确实很多合适的第三方库,也会带来一些困扰。
写博客的目的更多是对自己学习的一个记录,方便以后复习,所以需要一定的基础,可能不会一步步地来进行展示。

控件实时预览

利用@Preview()注解,不能带参数。
在这里插入图片描述
更改后可以实时更新,如下:
在这里插入图片描述
还是非常方便的~

一般加@Composable注解,作为ui界面,并且函数首字母大写,和方法区分。
布局元素Column、Row和Box,前两者分别对应列、行。Box 是一个能够将里面的子项依次按照顺序堆叠的布局组件,类似FrameLayout。

Modifier

是Compose ui开发的精髓,是一种修饰符,以组合的方式来修改组件,顺序很重要,会影响。
主要作用如下:

  • 可以去更新可组合项的大小,布局,行为和外观。
  • 添加互动。例如点击,滚动,可拖拽,缩放等。
  • 处理用户输入
  • 添加信息,如无障碍

clickable 使可组合项响应用户输入,并显示涟漪。
padding 在元素周围留出空间。
fillMaxWidth 使可组合项填充其父项为它提供的最大宽度。
size() 指定元素的首选宽度和高度。

在行尾放元素
weight 修饰符会让元素填满所有可用空间,使其“具有弹性”,也就是会推开其他没有权重的元素(即“无弹性”元素)。该修饰符还会使 fillMaxWidth 修饰符变得多余。
在这里插入图片描述
Surface 从字面上来理解,是一个平面,在 Material Design 设计准则中也同样如此,我们可以将很多的组件摆放在这个平面之上,我们可以设置这个平面的边框,圆角,颜色等等。

remember

对数据进行缓存,避免重新重组后数据丢失了。
可以进行一个ui的动态改变,所谓的内容的状态。比如
当为true,文本显示小猫咪,false重组显示为小狗。

val isShow = remember { mutableStateOf(false) },
if(isShow.value){
	Text("小猫咪")
}else{
	Text("小狗")
}

还可以

var isShow by remember { mutableStateOf(false) },

这样的话我们把isShow委托给了右边,就不需要使用value了。

状态提升

在可组合函数中,被多个函数读取或修改的状态应位于共同祖先实体中,此过程称为状态提升。“提升”意为“提高”或“升级”。
如果你的子组合函数被多次重用,请不要使其有状态函数( stateful),始终使用状态提升以便可以重用并使它们感觉独立。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值