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),始终使用状态提升以便可以重用并使它们感觉独立。

相关推荐

  1. 单片机学习记录

    2024-07-14 03:32:01       43 阅读
  2. Hadoop学习记录

    2024-07-14 03:32:01       22 阅读
  3. 深度学习相关记录

    2024-07-14 03:32:01       36 阅读
  4. Blender 学习笔记()快捷键记录

    2024-07-14 03:32:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 03:32:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 03:32:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 03:32:01       58 阅读
  4. Python语言-面向对象

    2024-07-14 03:32:01       69 阅读

热门阅读

  1. 【YashanDB知识库】yasql登录报错:YAS-00413

    2024-07-14 03:32:01       19 阅读
  2. ABB 1786-RPA控制器 处理器 模块

    2024-07-14 03:32:01       18 阅读
  3. 【云原生】Kubernetes----ETCD数据的备份与恢复

    2024-07-14 03:32:01       16 阅读
  4. 【监控】监控平台部署 Prometheus+Grafana

    2024-07-14 03:32:01       23 阅读
  5. 数据库系统概论——数据库原理 总结1

    2024-07-14 03:32:01       22 阅读
  6. git 如何查看 commit 77062497

    2024-07-14 03:32:01       17 阅读
  7. 策略模式适用场景与具体实例解析

    2024-07-14 03:32:01       24 阅读