电子商务网站建设第一章课后住房建设部官方网站

web/2025/10/2 15:34:26/文章来源:
电子商务网站建设第一章课后,住房建设部官方网站,301网站目录,展览馆网站建设方案书Compose版本发展 19年#xff0c;Compose在Google IO大会横空出世#xff0c;大家都议论纷纷#xff0c;为其前途堪忧。 21年7月Compose 1.0的正式发布#xff0c;却让大家看到了Google在推广Compose上的坚决#xff0c;这也注定Compose会成为UI开发的新风向。 23年1月…Compose版本发展 19年Compose在Google IO大会横空出世大家都议论纷纷为其前途堪忧。 21年7月Compose 1.0的正式发布却让大家看到了Google在推广Compose上的坚决这也注定Compose会成为UI开发的新风向。 23年1月 发布了1.4版本, 在不断更新迭代...... Compose是什么 Compose则是一个全新的UI库隶属Jetpack中的一员它的出现是为了重新定义Android UI的开发方式——声明式UI编程 Compose的优势 声明式UI它基于声明式的UI编程模型当数据发生改变时UI将自动刷新。这意味着不再需要编写命令式代码来控制 UI 的每一个细节去掉XML完全解除了混合写法xmlJava、kotlin的局限性超强兼容性大多数常用库如Navigation、ViewModel和Kotlin协程都适用于ComposeCompose 能够与现有 View 体系并存你可以为一个既有项目引入 Compose加速开发为我们提供了很多开箱即用的Material 组件如果的APP是使用的material设计的话那么使用Jetpack Compose 能让你节省不少精力。精简代码数量减少bug的出现实时预览Compose 预览机制可以做到与真机无异真正的所见所即得 Compose和View的关系 Compose 是基于 Canvas渲染它的原理是通过AndroidComposeView的dispatchDraw分发绘制通过dispatchTouchEvent分发手势来实现「在同一个 View 的内部完成整个 UI 组件树」的效果。 AndroidComposeView的作用是承上启下作为Compose和View混合开发的桥梁从而实现API互相调用的能力 Compose 是不会有能力上的天然限制的也就是传统 View 方案能做的事 Compose 全都可以做比如各种复杂的动画、手势、嵌套的多层级布局Compose 都可以做到。 Compose 没有做出对等实现的只有 SurfaceView 和 TextureView 这两个类它们是用于高速刷新的内容的比如视频播放或者相机的取景器界面。需要使用原生的 SurfaceView 或者 TextureView。 扩展: 直接在Android上使用skia引擎进行绘制UI这样就和flutter完全一致了不过google为了兼容原来的view没有选择skia这个方案兼容性是有了但是也限制了compose的性能。 声明式UI 命令式UI 声明式UI和命令式UI是两种不同的编程风格。 在命令式UI中需要手动构建一个全功能的UI实例比如一个TextView文本在随后UI发生变化时调用set方法手动刷新UI。 fun timer(){var count 0textView.setOnClickListener{count1textView.text count:${count}} } 而在声明式UI中开发人员描述当前的UI状态数据更新后UI的刷新交给Compose框架。 Composable fun Timer(){var count by remember { mutableStateOf(0) }Text(text count:${count}, modifier Modifier.clickable(onClick count)) } Compose项目集成 使用Jetpack Compose 来开始你的开发工作有2种方式 将Compose 依赖库添加到现有项目创建一个支持Jetpack Compose的新应用 gradle 配置 在app目录下的build.gradle 中将app支持的最低API 版本设置为21或更高同时开启Jetpack Compose enable开关代码如下 kotlin编译器与Compose兼容性对应表 android {buildFeatures {compose true}kotlinOptions {jvmTarget 1.8}composeOptions {kotlinCompilerExtensionVersion 1.4.0} } Compose依赖添加 借助 Compose 物料清单 (BoM)只需指定 BoM 的版本即可管理所有 Compose 依赖库版本 dependencies {implementation platform(androidx.compose:compose-bom:2023.01.00)implementation(androidx.compose.foundation:foundation)implementation androidx.compose.ui:ui } android推出的BOM(Bill of Material的缩写)来简化我们添加compose依赖过于繁杂的问题 为什么建议使用 BoM 管理 Compose 库版本 compose的一系列依赖版本众多更新且又频繁且又相互有所依赖对于我们开发来说理清这些层层次次关系足以头大然后还有个致命问题我们几个库使用不同版本可能还会导致编译直接报错出现依赖版本等冲突问题今后Compose 库将单独进行版本控制这意味着版本号将开始按照自己的节奏递增。每个库的最新稳定版本已经过测试并保证能够很好地协同工作。不过找到每个库的最新稳定版本可能比较困难而 BoM 会帮助您自动使用这些最新版本 BoM 是否会自动将所有 Compose 库添加到我的应用中 不会。需要再应用中实际添加和使用 Compose 库必须在模块应用级Gradle 文件通常是 app/build.gradle中将每个库声明为单独的依赖项行。 使用 BoM 可确保应用中的任何 Compose 库版本兼容但 BoM 实际上并不会将这些 Compose 库添加到您的应用中。 更新 BoM 版本时使用的所有Compose库都会自动更新到新版本。 VersionCatlogs 依赖添加 BOM与Compose依赖版本对应表 // settings.gradle....versionCatlogs{create(composeLibs){// Bom与Compose依赖库版本对应关系// https://developer.android.com/jetpack/compose/bom/bom-mapping?hlzh-cn// 目前使用的是Bom:2023.01.00,但其中foundation使用了1.4.0-beta02是因为该版本中LazyVerticalStaggeredGrid// 才支持自定义跨列(spanCount)的能力library(bom,androidx.compose,compose-bom).version(2023.01.00)// material组件库如下拉刷新library(material, androidx.compose.material, material).withoutVersion()// 基础ui组件库library(ui, androidx.compose.ui, ui).withoutVersion()// as预览library(preview, androidx.compose.ui, ui-tooling-preview).withoutVersion()library(tooling,androidx.compose.ui,ui-tooling).withoutVersion()// 基础能力库 modifier修饰符列表library(foundation, androidx.compose.foundation, foundation).version(1.4.0-beta02)// icon及扩展library(icons, androidx.compose.material, material-icons-core).withoutVersion()library(icons-ext, androidx.compose.material, material-icons-extended).withoutVersion()library(activity-compose, androidx.activity, activity-compose).version(1.6.1)// activity 和 viewmodel的扩展library(viewmodel-compose, androidx.lifecycle, lifecycle-viewmodel-compose).version(2.5.1)bundle(compose, [material, ui, preview,tooling,icons, icons-ext,foundation,activity-compose,viewmodel-compose])}} 添加一个 Text 元素 首先我们会在 onCreate 方法中添加一个 Text 元素来显示一个 Hello World! 的文本。 setContent 块定义了一个我们可以调用 Composable 函数的 avtivity 的布局Composable 函数只能从其他的 Composable 函数中调用 Jetpack Compose 使用一个 Kotlin 编译器插件来将这些 Composable 函数转化为应用程序的 UI 元素。例如由 Compose UI 库定义的 Text() 函数就可以在屏幕上显示一个文本标签。 class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {Text(Hello world!)}} } 定义一个 composable 函数 Jetpack Compose 是围绕着 Composable 函数建立的。要创建一个 Composable 函数只需在函数名称中添加 Composable 注解。 Composable 函数只能从其他 Composable 函数的范围内调用。 为了更好的理解定义一个 MessageCard() 函数它包含了一个 name 参数并使用这个参数来配置文本元素 class ComposeActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MessageCard(Hello world!!! Welcome to Compose)}}// Composable 函数一般用大写开头为了和普通的函数作为区分Composablefun MessageCard(name: String) {Text(text name)} } Android Studio 可以让你在 IDE 中预览你的 Composable 函数而不需要部署到设备上。 但是有个限制, 需要预览的 Composable 函数必须不能有任何参数。因为这个限制你不能直接预览 MessageCard() 函数。 但是你可以尝试写第一个叫 PreviewMessageCard() 的函数它调用带有参数的 MessageCard()。在 Composable 之前添加 Preview 注解。 Preview(showBackground true) Composable fun MessageCardPreview() {TestApplicationTheme {MessageCard(Hello world!!! Welcome to Compose)} } 消息卡片的搭建 到目前为止我们已经建立了我们的第一个 Composable 的函数和预览! 为了发现更多的 Jetpack Compose 功能我们将构建一个简单的页面结构其中包含可以通过一些动画展开的消息列表。 data class Message(val author: String, val body: String)// Composable 函数一般用大写开头为了和普通的函数作为区分 Composable fun MessageCard(msg: Message) {Row {Text(text msg.author)Text(text msg.body)} }Preview(showBackground true) Composable fun MessageCardPreview() {TestApplicationTheme {MessageCard(msg Message(author Hello Compose,body I am lovely-chubby))} }

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

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

相关文章

商城网站素材设置 iis 网站维护中

1 Makefile的作用 Makefile 指的是一个叫 Makefile 的文件,里面提前写了一些指令。每次要自动化的完成一个比较复杂项目的自动编译用的时候,就在命令行输入“make”命令Makefile使用。使用Makefile可以 “智能” 的知道: 1 哪些文件需要先进行编译。 2 当某一文件在某次mak…

软件园专业做网站网站建设提供资料表

给个关注?宝儿! 给个关注?宝儿! 给个关注?宝儿! 1 JDBC基础 JDBC(Java Database Connectivity)是Java提供对数据库进行连接、操作的标准API。Java自身并不会去实现对数据库的连接、查询、更新等操作而是通…

网站导航一定要一样吗怎样打开网站

1.公安备案网址 https://beian.mps.gov.cn/ 选择用户登录->法人用户登录 左边的码下载APP,登上去之后用APP扫右边的码,人脸识别

怎么做网站表白合肥公司网站建设价格低

IP地址城市版查询接口 API是指能够根据IP地址查询其所在城市等地理位置信息的API接口。这类接口在网络安全、数据分析、广告投放等多个领域有广泛应用。以下是一些可用的IP地址城市版查询接口API及其简要介绍 1. 快证 IP归属地查询API 特点:支持IPv4 提供高精版、…

国外网站为啥速度慢垂直电商网站如何做内容运营

函数 需要声明原型支持不定参数 func sum(numbers ...int)int支持返回多值支持递归支持命名返回参数 // 命名返回参数 func add(a, b int) (sum int) {sum a breturn // 这里不需要显式地写出返回值,因为已经在函数签名中声明了命名返回参数 } 支持匿名函数、闭包…

外贸网站建设和优化wordpress主题外贸下载

大家好,提到Linux,一些用户会认为这是一个复杂的操作系统,因为所有工作都是通过终端使用命令来完成的。但是当用户开始在Linux上工作时,就会喜欢上这些命令,在Linux上工作一段时间后,用户会开始更喜欢Linux…

如皋网站建设招标wordpress查询次数

文章目录 计算机系统5G云计算第一章 LINUX ansible 自动化运维工具(机器管理工具)一、概述二、ansible 环境安装部署三、ansible 命令行模块1.command 模块2.shell 模块3.cron 模块4.user 模块5.group 模块6.copy 模块7.file 模块8.hostname 模块9.ping …

做视频网站视频文件都存放在哪里5118关键词查询工具

【本节目标】 1.vector的介绍及使用 2.vector深度剖析及模拟实现 1.vector的介绍及使用 1.1 vector的介绍 vertor文档介绍 1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用连续存储空间来存储元素。也就是意味着可以采用下标对vector的元…

海北wap网站建设公司佛山网站建站建设

目录 准备: 开始: 1.解压 2.环境变量配置 3.生效环境变量配置文件 3.修改配置文件 1.修改zookeeper集群信息 2.修改mysql配置信息 4.启动 5.异常排查 6.页面 创作不易,你的动力是我创作的动力,如果有帮助请关注我&…

程家桥街道网站建设江苏电信网站备案

引言: SpringBoot确实帮助我们减少了很多配置工作,下面说一下程序是如何运行的。目前程序运行的入口就是SpringBoot工程创建时自带的那个类了,带有main方法的那个类,运行这个类就可以启动SpringBoot工程的运行。 @SpringBootApplication public class SpringBootQu…

郑州专业旅游网站建设网站建设需要这些工具和软件

面向对象 Object Oriented 面向对象的学习: 面向对象的语法(简单,记忆就可以搞定)面向对象的思想(稍难,需要一定的理解) 面向过程和面向对象的区别 面向过程开发,以函数作为基本结构…

闸北网站建设公司建设单位企业锁登陆网站

项目管理PMP6.0-五大过程组、十大知识领域、四十九个过程(记忆码:7664363734) 项目经理的影响力范围三者关系图(五大过程组、十大知识领域、四十九个过程)五大过程组十大知识领域十大知识领域之间联系 四十九个过程&am…

网站导航条模板南昌正规网站公司吗

Building Custom Tools for the DW/BI System 市场上有大量的工具帮我们来建立DW/BI系统、把信息交付给业务用户。这些工具的种类也很多,它们包括关系型数据库管理系统、OLAP数据库管理系统、ETL工具、数据挖掘工具、查询工具、报表工具,以及BI门户工具等…

网站建设合同标准版建设网站资质查询

一、安装支持stream的nginx版本: 1、首先,先下载nginx的rpm包,下载地址:http://nginx.org/packages/centos/7/x86_64/RPMS/ 下载 nginx-1.20.1-1.el7.ngx.x86_64.rpm2、执行安装命令: 然后,将下载好的rp…

企业标准型手机网站wordpress授权登录

System.SysUtils.AnsiCompareFileName 根据当前语言环境比较文件名。 在 Windows 下不区分大小写,在 MAC OS 下区分大小写。 在不使用多字节字符集 (MBCS) 的 Windows 区域设置下,AnsiCompareFileName 与 AnsiCompareText 相同。在 MAC OS 和 Linux 下&…

小米4路由器可以做网站嘛个人做的网站不能做淘客

文章目录 一 技术准备1.1 二维码技术(java)1.2 支付宝沙箱环境准备1.3 内网穿透 二 支付宝支付相关知识2.1 各种支付方式2.2 扫码付接入流程2.3 系统交互流程(时序图)2.4 加密逻辑 三 扫码支付实现3.1 添加maven依赖(Easy版)3.2 完…

做网站app公司前景免费的wordpress能用吗

1.数据类型 bool:布尔类型,属于基本类型的整数类型,取值为真和假 true:具有布尔类型的字面量,表示真 false:具有布尔类型的字面量,表示假 char:表示字符型,定义了字节的大小,char表示单字节字符 wchar_t:表…

网站加在线qq免费素材网png

Visio给立方体的每条边填充不同的颜色,超好用的visio小技巧~ 如何实现立方体的填充颜色从左边的纯色到右边的多色呢?一起学起来吧~ 在visio中绘制一个普通的立方体; 用一个大的矩形盖住刚才绘制的立方体; 全选之后找到 开发工具-&…

成都建设网站公司wordpress找回密码链接

【前端学习】—函数防抖&#xff08;十&#xff09; 一、什么是函数防抖 函数防抖&#xff1a;事件被触发n秒后再执行回调&#xff0c;如果在这n秒内又被触发&#xff0c;则重新计时。 二、代码实现 <script>const searchElement document.getElementById("searc…