Android Compose的基本使用

news/2024/10/8 10:35:38/

前言:

Compose这个东西呢,好处我没发现,坏处就是学习成本和低版本兼容.

不过,看在官方力推的份儿上,有空就学一下吧.

当初的kotlin,很多人说鸡肋(包括我)!现在不也咔咔用纯kotlin做项目吗?哈哈哈哈.

未来的事情,谁说得清呢?

首先创建一个专用的Compose项目

 对没错!看到EmptyActivity中间的六边形图了没有,我也不知道啥意思.

但是,这个创建完毕后,首页就是用Compose写的

创建完成后目录结构如上 ↑   页面代码和截图不一样,因为我重写了.

接下来我直接贴源码吧!

分别介绍了:

  • 1.简单的View排列放置以及基础属性
  • 2.View的事件监听和事件传递(如点击事件,输入事件)
  • 3.View的数据动态赋值(直接改变数据,UI自动改变) (数据必须由remember代理)

代码如下:

class MainActivity : ComponentActivity() {private val TAG = "MainActivity"override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {Column {    //竖向布局var newText by remember { mutableStateOf("默认") }NewText(newText, modifier = Modifier.background(Color.Green).padding(20.dp))var fieldText by remember { mutableStateOf("") }NewTextField(fieldText, "随便输入点什么吧") {//输入监听事件Log.e(TAG, "输入内容:$it")fieldText = itnewText = it}NewButton("清空按钮") {//点击事件newText = ""fieldText = ""}}}}@Composablefun NewText(name: String, modifier: Modifier = Modifier) {Text(text = name,modifier = modifier)}@OptIn(ExperimentalMaterial3Api::class)@Composablefun NewTextField(text: String, hint: String, onValueChange: (String) -> Unit) {TextField(value = text,placeholder = {Text(text = hint)},onValueChange = {// 另一种事件赋值的写法,这种写法可以在这里增加额外代码onValueChange(it)})}@Composablefun NewButton(name: String, onClick: () -> Unit) {Button(onClick = onClick) {Text(text = name)}}}

运行结果如下:

_______________________________________________________________________

深海也是刚开始试着用Compose,就写点基础的供小白参考.
如果您感觉文章有用的话麻烦点个赞吧.

http://www.ppmy.cn/news/1536077.html

相关文章

【设计模式】软件设计原则——依赖倒置合成复用

依赖倒置引出 依赖倒置 定义:高层模块不应该依赖低层模块,二者都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。面向接口编程而不是面向实现编程。 通过抽象使用抽象类、接口让各个类or模块之间独立不影响,实现…

富格林:警悟可信经验安全投资

富格林指出,黄金具有不错的投资价值,一直以来备受投资者的喜爱,近年来大家也纷纷加入现货黄金市场为己增值财富。但是要为投资安全护航的前提,是需要投资者使用合适可信的方法以及掌握相对应的投资技巧。下面富格林将总结以下可信…

股市突然暴涨,需要保持理性

由于明天是国庆长假之后的沪、深股市开市首日,因而“此次牛市能持续多长?”这个话题成为网络热搜,就实乃必然 。 回答此问,难易相兼。因为爱听假话者众多,讲真话者往往成为众矢之的。笔者难分真假,因此仅作为早在200…

Java 实现布隆过滤器

在开发过程中,我们经常会遇到需要判断一个元素是否存在于一个庞大的集合中的情况。如果直接使用传统的数据结构如哈希表,可能会面临内存占用大、查询效率低等问题。而布隆过滤器(Bloom Filter)则是一种高效的空间利用率极高的概率…

c++primer第十三章 类继承

本章内容:单个类就可以提供用于管理对话框的全部资源。通常,类库是以源代码的方式提供的,这意味着可以对其进行修改,以满足需求。但是,C-提供了比修改代码更好的方法来扩展和修改类。这种方法叫作类继承(class inheria…

在 Ubuntu 下通过 Docker 部署 NAS 服务器

今天我们在阿贝云的免费服务器上进行 NAS 服务器的部署测试。阿贝云的免费云服务器真是个不错的选择,配置上有1核CPU、1G内存、10G硬盘和5M带宽,完全能满足基本的测试需求。对于小型项目或学习来说,这样的免费云服务器实在是不可多得的资源&a…

信号与系统 第六章(拉普拉斯变换)

一、拉普拉斯变换 1、拉普拉斯变换公式 (1)一个单位冲激响应为的线性时不变系统,对复数输入信号的响应为,其中,若s为纯虚数(即),则对应于的傅里叶变换,对一般的复变量s…

OpenAI董事会主席Bret Taylor的Agent公司Sierra:专注于赋能下一代企业用户体验

本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结,2小时视频,5分钟阅读,加速内容学习与传播。 视频来源 youtube: https://www.youtube.com/watch?vriWB5nPNZEM&t47s 大纲 介绍 欢迎与介绍 介绍Bret Taylor&#x…