当前位置: 首页 > news >正文

Android Compose的基本使用

前言:

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.lryc.cn/news/451914.html

相关文章:

  • 计算机网络:计算机网络体系结构 —— 专用术语总结
  • Rust的前端Tauri编程-基于JS框架的初步探索
  • 【Flume Kafaka实战】Using Kafka with Flume
  • 5G NR物理信号
  • Pikachu-Cross-Site Scripting-存储型xss
  • 媲美GPT-4o mini的小模型,Meta Llama 3.2模型全面解读!
  • 【leetcode】 45.跳跃游戏 ||
  • coco(json)、yolo(txt)、voc(xml)标注格式的相互转换
  • 以太网交换安全:端口安全
  • [题解] Codeforces Round 976 (Div. 2) A ~ E
  • 【零基础入门产品经理】学习准备篇 | 需要学一些什么呢?
  • 第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)征稿
  • [数据集][目标检测]电力场景防震锤缺陷检测数据集VOC+YOLO格式705张1类别
  • 【SpringBoot】
  • Linux操作系统中MongoDB
  • 2、.Net 前端框架:OpenAuth.Net - .Net宣传系列文章
  • unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发
  • 数据权限的设计与实现系列11——前端筛选器组件Everright-filter集成功能完善2
  • C++ 游戏开发
  • 【历年CSP-S复赛第一题】暴力解法与正解合集(2019-2022)
  • 基于PyQt5和SQLite的数据库操作程序
  • 在Ubuntu 20.04中安装CARLA
  • 【高中数学/对数/导数】曲线y=ln|x|过坐标原点的两切线方程为?
  • Qt CMake
  • 制造企业各部门如何参与生产成本控制与管理?
  • FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载
  • 活体检测标签之2.4G有源RFID--SI24R2F+
  • Web3Auth 如何工作?
  • 问:SQL中join语法的差异?
  • 计算机网络各层有哪些协议?计算机网络协议解析:从拟定到实现,全面了解各层协议的作用与区别