001 Jetpack Compose入门

news2024/11/23 12:37:53

目录

1.前提准备

2.新建项目


1.前提准备

下载最新版本的AndroidStudio,我目前的版本如下:

注意要将kotlin环境配置好

2.新建项目

新建项目中空Activity就是新建的Compose项目

然后就会得到一个Compose界面的应用

 为何要学Compose可以看郭霖的文章:

原创:写给初学者的Jetpack Compose教程,为什么要学习Compose?

这里自动生成的代码涉及到了一些Compose的基础知识,我们得把这些基础知识了解清楚了,才能开始后续Compose的学习。

首先看一下onCreate函数中的代码,这里调用了一个setContent函数。注意这个名字是非常讲究的,因为每个Android开发者都会对另外一个函数的名字非常熟悉:setContentView。所以,过去我们使用View来编写界面的时候,都会调用setContentView函数来设置界面。而用了Compose之后,由于不再使用View了,所以就改用这个新的setContent函数来设置界面了。

setContent函数会提供一个Composable作用域,所以在它的闭包中我们就可以随意地调用Composable函数了。

那么什么又是Composable函数呢?简单来说,就是一个函数的上方,使用了@Composable进行声明,那么它就是一个Composable函数。

观察上述代码,你会发现Greeting函数就是一个Composable函数。

注意,Composable函数只能在Composable作用域中才能调用,所以如果你尝试在setContent函数的闭包外面调用Greeting函数,你会发现编译无法通过。

另外,所有的Composable函数还有一个约定俗成的习惯,就是函数的命名首字母需要大写。这一点和Java的函数命名习惯很不相同,因为Java函数命名通常都是使用首字母小写的驼峰模式。

但也正是因为如此,Composable函数名才特意要求首字母需要大写,这样我们就能够更加直观地通过函数名称来快速地判断一个函数是不是Composable函数,不然的话还需要找到这个函数的定义位置,看看它有没有@Composable注解才行。

那么根据这个规则,我们就可以得知,setContent函数中嵌套的ComposeTestTheme和Surface这两个函数都是Composable函数。

其中,ComposeTestTheme函数是Android Studio自动为我们创建的,主要用于对项目的主题进行设置和定制,我们可能会在后面的文章讨论这个话题。

Surface函数是Material库中提供的一个通用函数,它的主要作用是为了让应用程序可以更好地适配Material Design,例如控制阴影高度、控制内容颜色、裁剪形状等等。由于目前我们还是初学者,暂时没有必要对这个Surface函数了解太多,这里就不做过多解释了。

除此之外,你会发现Android Studio还为我们生成了一个GreetingPreview函数。它也是一个Composable函数,但是它比普通的Composable函数多了一个@Preview注解,这个注解表示这个函数是用来快速预览UI样式的。

也就是说,写在GreetingPreview函数中的UI,可以在不运行程序到手机上的情况下就实现快速预览。操作方法是,在Android Studio的主编辑界面点击右上角的Split选项,然后编译一下项目即可

个人建议是使用真机看效果,这个预览还是不怎么好用的,如下是我的真机效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/749725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拉丁语翻译软件分享-收藏这几个备用

在当今全球化的时代,语言交流变得更加重要。虽然英语已经成为国际通用语言,但依旧有一些古老的语言在特定领域和文化中仍然得到广泛使用。其中,拉丁语作为古代罗马帝国的官方语言,对欧洲语言起了重要的影响。在本文中,…

el-select组件如何在页面一加载时就根据数据选中el-option中的数据

页面一加载就要选中下拉中的数据,要和下拉数组中的value的类型一致,value是number,select的v-model就不能是字符串,必须是number.不然就会显示字符串

【C语言】【数据结构初阶】 快排变慢排?怎么个事儿?

一.为何“快排”变“慢排” 我们知道,快排是一种很好的排序算法。但是在极少数的一些情况下,“快速排序”好像名不副实了。比如:1,2,1,2,1,2,1。。。。。。这样的数列。 …

十七、web网页像素知识

目录: 像素视口 一、像素 像素:- 屏幕是由一个个发光的小点构成,这一个个的小点就是像素- 分辨率:1920 x 1080 说的就是屏幕中小点的数量- 在前端开发中像素要分成两种情况讨论:css像素和物理像素- 物理像素&#xff…

具有电动驱动的四足机器人模型研究(SimulinkMatlab代码)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Mac的docker安装redis

Mac的docker安装redis 1、docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store that… 12205 …

unity 2018.4.0+SteamVR1.2.2+VRTK3.2.1报错解决

开发案例参考 07-游乐设备选择场景搭建_哔哩哔哩_bilibili 导入之后代码报错Assets/SteamVR/Editor/SteamVR_Settings.cs(135,49): error CS0117: UnityEditorInternal.VR.VREditor does not contain a definition for GetVREnabledDevices 解决方法 打开SteamVR_Settings 脚…

深入了解C语言中scanf()函数的用法

目录 正文 一、基本用法 二、格式化字符串 三、多个输入值 四、错误处理 五、总结 正文 在C语言中,scanf()函数是一个非常有用的输入函数,它允许我们从用户那里获取输入,并将输入存储到指定的变量中。本文将详细介绍scanf()函数的使用方…

【ELK企业级日志分析系统】部署Filebeat+Kafka+Logstash+Elasticsearch+Kibana集群详解(EFLFK)

部署FilebeatKafkaLogstashElasticsearchKibana集群详解 1. Kafka1.1 Kafka概述1.1.1 为什么需要消息队列(MQ)1.1.2 使用消息队列的好处 1.2 消息队列的两种模式1.3 Kafka定义1.3.1 Kafka简介1.3.2 Kafka的特性1.3.3 Kafka系统架构1.3.4 Partation数据路…

微信消息延迟怎么办?

微信是我们常用的聊天工具,那在微信聊天中,相信有很多朋友都遇到过,明明对方的消息已经发过来了,可微信就是没有显示。这就很容易发生误会或者耽误很多事情。 那么微信消息延迟是什么原因导致的呢? 网络信号差 当我们的…

PostgerSQL证书长什么样子

PostgerSQL证书长什么样子 一、证书样式: 重点请看公章:工业和信息化部教育与考试中心 仿冒、假借、诋毁公章,可向工信部和当地公安机关举报 二、发证单位 证书由工业和信息化部教育与考试中心进行制作。 PostgerSQL证书发证单位&…

数据可视化:揭开数据的视觉奇迹

随着大数据时代的到来,我们面临着海量的数据,如何从中获取有价值的信息成为一项重要的挑战。数据可视化作为一种强大的工具,通过图表、图形和交互界面,将数据转化为可视化的形式,帮助我们更好地理解和分析数据。 数据可…

特斯拉降价阴影下,智己如何「登高」?

作者 | 刘然 来源 | 洞见新研社 都说背靠大树好乘凉,但背靠上汽集团的智己汽车,反而水深火热。 2021年,在智己正式向外界公布了“豪华纯电智能轿车”智己L7之后,其CEO刘涛曾放出豪言:“我们在未来的很多年后再回顾今…

工作--输入文档

知识点: 1、find 返回的是对象,找到第一个满足条件的 就停止遍历,返回此对象 !2、async...await 使用场景: 1、一般循环中 不给方法加async...await 2、then里面 的一块是整体 3、watch监听: 数组&…

提高视觉检测系统稳定性的隐藏办法——10G高速图像采集卡

提高视觉检测系统稳定性的隐藏办法——10G高速图像采集卡 目前,随着我国各方面配套基础设施建设的完善,企业技术、资金的积累,各行各业积极探索和大胆的尝试机器视觉技术,实现工业自动化、智能化。在机器视觉系统的使用过程中&am…

SQL 删除重复的电子邮箱

196 删除重复的电子邮箱 SQL架构 表: Person -------------------- | Column Name | Type | -------------------- | id | int | | email | varchar | -------------------- id是该表的主键列。 该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。 删除 所有重复的电…

APK的数字签名检测

检测命令: C:\Program Files\Java\jdk1.8.0_111\bin\jarsigner.exe -verify APK 文 件 路 径 -verbose –certs 当输出结果为“jar 已验证”时,表示签名正常 检测签名的 CN 及其他字段是否正确标识客户端程序的来源和发布者身份 如上图,说明…

第三章:DeepLabV3——重新思考用于语义图像分割的扩张卷积

0.摘要 在这项工作中,我们重新思考了扩张卷积(atrous convolution),这是一种能够明确调整卷积滤波器的感受野(field-of-view)以及控制由深度卷积神经网络计算的特征响应的分辨率的强大工具,应用…

Linux基础(二)用户权限及修改sudo、getent、chmod、chown、yum、systemctl、ln、日期和时间、IP地址管理、网络请求与下载

上接: Linux基础(一)Linux基础命令、vi/vim编辑器_独憩的博客-CSDN博客 目录 用户权限 sudo命令 用户和用户组 用户组管理: 用户管理: getent 权限认知 chmod命令修改权限 chown修改文件文件夹的所属用户和用…

119、仿真-51单片机温湿度光照强度LCD 1602显示报警设计(Proteus仿真+程序+元器件清单等)

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元…