Android-Jetpack Compose的简单运用

news2024/9/20 18:27:30

一.初步认识Jetpack Compose

1.什么是Jetpack Compose

Jetpack Compose 是一个用于构建原生Android UI 的现代化工具包,它基于声明式的编程模型,因此你可以简单地描述UI的外观,而Compose则负责其余的工作-当状态发生改变时,你的UI将自动更新。由于Compose基于Kotlin构建,因此可以与Java编程语言完全互操作,并且可以直接访问所有Android和Jetpack API。

2.它与传统写UI的方式有什么区别

①传统写UI的方式:就是先在建立一个xml文件,在里面写好布局好,再回到Java文件(或者是Kotlin文件)里去把控件实例化出来后,再去调用。

②Compose这个库:或者说它是一个框架,它重新定义了Android UI的写法,不再使用xml文件了,而是直接在Kotlin文件(只支持Kotlin)里,写布局的代码。官方对Compose的评价是“让困难的事情变简单,让不可能的事情变得有可能”。

3.Compose相对于传统的UI写法,它有哪些优势

①它是声明式UI
大家都会把我们以前传统的UI方法,叫做是“命令式UI”,而把compose叫做是“声明式UI”。
compose的优势就在于,它是一个完全的声明式UI,我们只管把界面声明出来后,当数据变化时,我们不用手动去更新,它会自己帮我们更新数据,并显示最新的数据,省去了我们去做界面更新的工作。
传统 UI 能做到的事,Compose 都是可以做到的:比如自定义绘制、自定义布局、自定义触摸,还有动画,Compose 都是可以做到的。

②去掉了xml
这是compose的第二个优势,它抛弃了 xml 的同时还保持了写法的简单,完全解除了混合写法(xml+Java、kotlin)所带来的局限性,让我们写Ui更快速。

4.如何创建一个支持Jetpack Compose的新应用

创建一个支持Jetpack Compose 的应用,如下几个步骤就可以了:

1.如果你在Android Studio的欢迎窗口,点击Start a new Android Studio project,如果你已经打开了Android Studio 项目,则在顶部菜单栏选择File > New > New Project

2.在Select a Project Template 窗口,选择Empty Compose Activity并且点击下一步
在Configure your project 窗口,做如下几步:

a. 设置项目名称, 包名和保存位置

b. 注意,在语言下来菜单中,Kotlin 是唯一一个可选项,因为Jetpack Compose 只能用Kotlin来写的才能运行。

c. Minimum API level 下拉菜单中,选择21或者更高

d.点击Finish

现在,你就可以使用Jetpack Compose 来编写你的应用了。

二.一个Jetpack Compose的简单运用

1.首先创建一个项目

2.使用modifier设置样式,使其填充整个屏幕,然后使用mutableStateOf对状态进行监听,状态变化时触发,初始状态设为false即不显示

 Column(
                    modifier = Modifier.fillMaxSize()
                ) {
                    var isVisible by remember {
                        mutableStateOf(false)
                    }

3.创建一个botton并设置其点击事件

Button(onClick = {
                        isVisible = !isVisible
                    }) {
                        Text(text = "Toggle")
                    }

4.接下来设置淡入的动画,并创建一个红色的box让它单击按钮后填充整一个的屏幕

AnimatedVisibility(
                        visible = isVisible,
                        enter= slideInHorizontally()+ fadeIn(),
                        modifier = Modifier.fillMaxWidth().weight(1f)

                    ) {
                        Box(modifier = Modifier.background(Color.Red))
                    }

效果图

请添加图片描述

作者:吕宇豪
https://blog.csdn.net/qq_52967136/article/details/128175993

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

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

相关文章

端口转发工具Rinetd详细入门教程

目录 条件 下载 安装 方法A.shell安装 方法B.shell脚本安装 配置rinetd.conf文件 编辑器A:nano(新手友好) 编辑器B:vim rinetd开关 A.配置启动 B.脚本启动 创建脚本 启动 测试 参考链接 条件 有root权限rinetd.c…

HTML+CSS抗疫网页设计 疫情感动人物静态HTML网页 web前端开发技术 web课程设计 网页规划与设计

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

基于X86的运算板卡加速边缘智能应用

XM-SOM-6801是一款基于Haswell-M平台的标准COME TYPE6模块。它是标准的COME TYPE6的规格,尺寸仅有125mm95mm。该模块汇集了Haswell-M平台高中低三档的CPU,分别是I7-4900MQ/I5-4300M/I3-4100M CPU。该CPU具有强大的运算能力,可广泛应用于通信、…

[附源码]Python计算机毕业设计SSM敬老院信息管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]计算机毕业设计小区疫情事件处理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

idea maven构建.jar包镜像 发布到远程Linux docker 镜像

最近在用IDEA,在连接docker的时候发现一直提示:no further information。按照网上的操作方式来做,发现问题一直存在。 重启docker发现没有什么用。 最后想了想可能是docker的版本问题。现在国内很多的信息都相对来说比较晚。 docker --versio…

ReadingTime-十二月

CV文章浅读_try_everyday0x1204.面向目标检测的对抗样本综述对抗样本常用数据集及评价标准对抗攻击方法描述防御方法总结现阶段偏向从阅读获取知识点而非创新点0x1204.面向目标检测的对抗样本综述 袁珑, 李秀梅, 潘振雄, 孙军梅, 肖蕾. 2022. 面向目标检测的对抗样本综述. 中国…

uni-app的支付与打包上传

支付app的支付(支付宝付) 准备工作 1.支付厂商获取id 获取支付厂商 uni.getProvider({service:"payment"})2.微信:微信支付平台 https://pay.weixin.qq.com/ 3、打包 manifest.json app模块配置 payment支付 可以选择支付宝支付…

年产2万吨山楂酒工厂的设计-灭菌工段及车间的设计(lunwen+任务书+选题表+cad图纸)

目 录 摘要 I ABSTRACT II 1前 言 1 1.1设计背景及目的 1 1.1.1山楂酒的介绍及功效 1 1.1.2目标人群 1 1.1.3发展前景 2 1.2设计依据 2 1.3设计内容 2 1.4原材料的选择 3 2 工厂总体设计 5 2.1 厂址的选择 5 2.2 总平面布置 5 2.2.1工厂总平面布置设计原则 5 2.2 车间布置设计原…

写一个flutter程序2

需求 完成一个简单的移动应用程序,功能是:为一个创业公司生成建议的名称。用户可以选择和取消选择的名称、保存(收藏)喜欢的名称。该代码一次生成十个名称,当用户滚动时,会生成一新批名称。用户可以点击导…

利用通信基础设施提高电网的稳态稳定性(Matlab代码实现)

目录 1 概述 2 稳态稳定性分析 2.1 系统模型 2.2 稳态稳定性 2.3 问题说明 3 仿真结果 4 MAtlab代码 1 概述 随着电力系统的复杂性和规模的增加,电力系统的有效控制变得越来越困难。我们提出了一种自动控制策略,该策略基于通过通信基础设施获得的…

从0搭建前端脚手架详解(小白也可以搭建)

本篇文章用来为大家提供一个搭建简易前端脚手架的思路。 先来看一眼实现的效果。 从图上来看这个脚手架的功能非常的简单只有一个创建的命令,其他都是帮助和显示版本号的。 也就是上图这句,创建一个新项目,只需要输入create 项目名便可使用&…

[附源码]计算机毕业设计大学生心理测评系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

MATLAB学习笔记(系统学习)

教程来源: 1.MATLAB教程:https://www.cainiaojc.com/matlab/matlab-tutorial.html 不断学习补充中~~~ 文章目录一、MATLAB基础二、MATLAB科研绘图(重点在于修改参数,优化图片)一、MATLAB基础 1.在MATLAB中使用分号&a…

免费网课查题接口

免费网课查题接口 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳…

Java并发编程学习14-任务关闭(上)

任务关闭(上)-- 关闭基于线程的服务 《任务关闭》由于篇幅较多,拆分了两篇来介绍各种任务和服务的关闭机制,以及如何编写任务和服务,使它们能够优雅地处理关闭。 我们知道,应用程序通常会创建拥有多个线…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.9 数据卷挂载案例2

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.9 数据卷挂载案例210.9.1 直接开干10.9.2 数据卷挂载的方…

[附源码]Python计算机毕业设计Django设备运维平台出入库模块APP

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

动态数据增强及构造方案解决

前言 随着数据量的增长以及业务的调整变更,我们需要选择合适的技术及存储引擎对数据进行归类,调整,达到高并发、秒响应、低延迟及可扩展对现有程序的改造升级问题&现状 任务重,时间紧,人力不足,不能够…

[附源码]计算机毕业设计基于SpringBoot的玉石交易系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…