android,Compose,消息列表和动画(点击item的时候,就会删除)
Compose,消息列表和动画(点击item的时候,就会删除)
package com.example.mycompose08import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.mycompose08.ui.theme.MyApplicationThemeimport androidx.compose.animation.*
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.*
import androidx.compose.material3.*
import androidx.compose.material3.Card
import androidx.compose.runtime.*
import androidx.compose.ui.*
import androidx.compose.ui.unit.*class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyApplicationTheme {// A surface container using the 'background' color from the themeSurface(modifier = Modifier.fillMaxSize(),color = MaterialTheme.colorScheme.background) {AnimatedList()}}}}
}// 定义一个可组合函数,用于显示一个列表
@Composable
fun AnimatedList() {// 创建一个状态变量,用于存储列表的数据val list = remember { mutableStateListOf("Apple", "Banana", "Cherry","先天下之优而优","后天下之乐而乐") }// 创建一个懒加载列表,用于显示列表的每一项LazyColumn(modifier = Modifier.fillMaxSize(),contentPadding = PaddingValues(16.dp)) {// 遍历列表的数据,为每一项创建一个可组合函数items(list) { item ->// 使用AnimatedVisibility函数,根据列表项是否可见来添加淡入淡出的动画效果AnimatedVisibility(visible = list.contains(item),enter = fadeIn(),exit = fadeOut()) {// 使用Card函数,创建一个卡片样式的列表项Card(modifier = Modifier.fillMaxWidth().padding(8.dp).clickable {// 点击卡片时,从列表中移除该项list.remove(item)},//elevation = 4.dp
// shadowElevation = 4.dp) {// 在卡片中显示列表项的文本内容Text(text = item,modifier = Modifier.padding(16.dp),fontSize = 24.sp)}}}}
}@Preview(showBackground = true)
@Composable
fun GreetingPreview() {MyApplicationTheme {AnimatedList()}
}
案例二:
package com.example.mycompose09 // 定义包名import android.os.Bundle // 导入Bundle类
import androidx.activity.ComponentActivity // 导入ComponentActivity类
import androidx.activity.compose.setContent // 导入setContent函数
import androidx.compose.foundation.Image // 导入Image可组合项
import androidx.compose.foundation.border // 导入border修饰符
import androidx.compose.foundation.clickable // 导入clickable修饰符
import androidx.compose.foundation.layout.Column // 导入Column可组合项
import androidx.compose.foundation.layout.Row // 导入Row可组合项
import androidx.compose.foundation.layout.Spacer // 导入Spacer可组合项
import androidx.compose.foundation.layout.fillMaxSize // 导入fillMaxSize修饰符
import androidx.compose.foundation.layout.height // 导入height修饰符
import androidx.compose.foundation.layout.padding // 导入padding修饰符
import androidx.compose.foundation.layout.size // 导入size修饰符
import androidx.compose.foundation.layout.width // 导入width修饰符
import androidx.compose.foundation.lazy.LazyColumn // 导入LazyColumn可组合项
import androidx.compose.foundation.shape.CircleShape // 导入CircleShape形状
import androidx.compose.material3.MaterialTheme // 导入MaterialTheme主题
import androidx.compose.material3.Surface // 导入Surface可组合项
import androidx.compose.material3.Text // 导入Text可组合项
import androidx.compose.runtime.Composable // 导入Composable注解
import androidx.compose.runtime.mutableStateOf // 导入mutableStateOf函数
import androidx.compose.runtime.remember // 导入remember函数
import androidx.compose.ui.Modifier // 导入Modifier类
import androidx.compose.ui.draw.clip // 导入clip修饰符
import androidx.compose.ui.res.painterResource // 导入painterResource函数
import androidx.compose.ui.tooling.preview.Preview // 导入Preview注解
import androidx.compose.ui.unit.dp // 导入dp单位
import com.example.mycompose09.ui.theme.MyApplicationTheme // 导入自定义主题// 下面是导入的其他库,用于实现更多功能
import androidx.compose.runtime.setValueimport androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.items
import androidx.compose.material.*
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.ui.*
import androidx.compose.ui.unit.*class MainActivity : ComponentActivity() {// 定义MainActivity类,继承自ComponentActivity类override fun onCreate(savedInstanceState: Bundle?) { // 重写onCreate方法,接收一个Bundle对象作为参数super.onCreate(savedInstanceState) // 调用父类的onCreate方法,并传递参数setContent { // 调用setContent函数,设置界面内容为一个可组合函数的lambda表达式MyApplicationTheme { // 调用自定义主题函数,应用主题样式到界面内容中// A surface container using the 'background' color from the themeSurface(// 设置Surface的修饰符为填充最大尺寸,即占满整个屏幕空间modifier = Modifier.fillMaxSize(),// 设置Surface的颜色为主题中定义的背景色color = MaterialTheme.colorScheme.background) {// Call the Conversation function here and pass a list of messages as a parameter.Conversation(messages = listOf( // 调用Conversation函数,并传递一个Message列表作为参数,显示一个对话界面。Message("Alice", "Hello, how are you?", R.drawable.p62, true),Message("Bob", "I'm fine, thank you. And you?", R.drawable.p19, false),Message("Alice", "I'm good too. What are you doing?", R.drawable.p2, true),Message("Bob", "Just learning Jetpack Compose. It's awesome!",R.drawable.p82,false)))}}}}
}// 定义一个数据类,表示一条消息,包含两个属性:作者和内容
data class Message(val author:String,val body:String,val imageId: Int, val isSent: Boolean)@Composable
fun MessageCard(msg: Message) {// 定义一个MessageCard函数,接收一个Message对象作为参数,用于显示一条消息的卡片// 创建一个状态变量,用于存储列表的数据val list = remember {// 调用remember函数,创建一个可变状态列表,并初始化为三个字符串mutableStateListOf("Apple", "Banana", "Cherry")}Row(modifier = Modifier.padding(all = 8.dp)) {// 调用Row函数,创建一个水平排列的容器,并设置修饰符为8dp的内边距Image(// 调用Image函数,创建一个图片组件painter = painterResource(msg.imageId),contentDescription = null,modifier = Modifier.size(40.dp).clip(CircleShape).border(1.5.dp, MaterialTheme.colorScheme.secondary, CircleShape))Spacer(modifier = Modifier.width(8.dp))var isExpanded by remember { mutableStateOf(false) }// We toggle the isExpanded variable when we click on this ColumnColumn(modifier = Modifier.clickable { isExpanded = !isExpanded }) {Text(text = msg.author,color = MaterialTheme.colorScheme.secondary,style = MaterialTheme.typography.labelSmall)Spacer(modifier = Modifier.height(4.dp))Surface(shape = MaterialTheme.shapes.medium,) {Text(text = msg.body,modifier = Modifier.padding(all = 4.dp),// If the message is expanded, we display all its content// otherwise we only display the first linemaxLines = if (isExpanded) Int.MAX_VALUE else 1,style = MaterialTheme.typography.bodyMedium)}}}
}@Composable
fun Conversation(messages: List<Message>) {LazyColumn {items(messages){// Call the MessageCard function here and pass each message as a parameter.MessageCard(msg = it)}}
}@Preview(showBackground = true)
@Composable
fun ConversationPreview() {val messages = listOf(Message("Alice", "Hello, how are you?", R.drawable.p62, true),Message("Bob", "I'm fine, thank you. And you?", R.drawable.p19, false),Message("Alice", "I'm good too. What are you doing?", R.drawable.p2, true),Message("Bob", "Just learning Jetpack Compose. It's awesome!",R.drawable.p82,false))Conversation(messages = messages)
}
相关文章:

android,Compose,消息列表和动画(点击item的时候,就会删除)
Compose,消息列表和动画(点击item的时候,就会删除) package com.example.mycompose08import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundat…...

go-admin 使用开发
在项目中使用redis 作为数据缓存:首先引入该包 “github.com/go-redis/redis/v8” client : redis.NewClient(&redis.Options{Addr: config.QueueConfig.Redis.Addr, // Redis 服务器地址Password: config.QueueConfig.Redis.Password, // Redis 密码&…...
力扣的板子
板子 线性筛法求质因子的板子快速幂 线性筛法求质因子的板子 int limit 100000; //修改为题目中的数字的上限 bool isprime[100005] {0}; //保存所有1~limit中的数字是不是质数 int myprime[100005] {0}; //保存2~limit中所有数字的最小质因子 int primes[100000] {0}; …...
基于Matlab实现路径规划算法(附上15个完整仿真源码)
路径规划是机器人技术中非常重要的一项任务,它涉及到机器人在复杂环境中的自主移动和避障能力。在本文中,我们将介绍利用多种算法实现路径规划的Matlab程序,包括模拟退火算法、RRT算法、PRM算法、聚类算法、potential算法、GA算法、fuzzy算法…...

纯跟踪(Pure Pursuit)路径跟踪算法研究(2)
纯跟踪(Pure Pursuit)路径跟踪算法研究(2) 下午进行了简单的公式推导,理论推导部分是没有问题的 下面的博客提供了在实车上用 GPS 实现纯跟踪控制的一些思路和注意点 Pure Pursuit(纯追踪算法)ROS实践 并不急于在实车…...

前后端分离------后端创建笔记(02)
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
Webpack5 Preload/Prefetch技术
文章目录 什么是Preload/Prefetch技术一、Preload:确保必需资源的快速获取二、Prefetch:预加载未来可能使用的资源三、使用注意事项四、Prefetch:总结 什么是Preload/Prefetch技术 在现代Web开发中,页面加载速度对于用户体验至关…...

PHP原生类
什么是php原生类 原生类就是php内置类,不用定义php自带的类,即不需要在当前脚本写出,但也可以实例化的类 我们可以通过脚本找一下php原生类 <?php $classes get_declared_classes(); foreach ($classes as $class) {$methods get_clas…...

QGIS3.28的二次开发八:显示shp的属性表
这里实现两个基本的 GIS 软件需求:矢量图层的属性表显示,以及根据属性筛选要素。 具体需求如下: 加载一个矢量图层并打开其属性表;输入筛选条件确认无误后,画布上和属性表中均只显示筛选后的要素。 QGIS 提供了若干…...
虚拟机安装 Ubuntu桌面版,宿主机无法访问虚拟机 ufw 防火墙简单使用
虚拟机安装 Ubuntu桌面版,宿主机无法访问虚拟机 问题处理安装ssh服务ufw防火墙 放行ssh服务ufw 常用命令 问题 本次安装使用的 ubuntu-22.04.2-desktop-amd64 ,网络连接使用的是桥接,查看ubuntu的ip是正常的,与宿主机在同一个网段…...

jquery发送ajax练习
jquery发送ajax练习 工具代码运行结果 工具 HBuilder X 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>通过ajax进行图片的提取和显示</title><style>div{background-color: beige;color: red;font-s…...

adb用法,安卓的用户CA证书放到系统CA证书下
设备需root!!设备需root!!设备需root!! 测试环境:redmi 5 plus、miui10 9.9.2dev(安卓8.1)、已root win下安装手机USB驱动(过程略,…...

【LVS-NAT配置】
配置 node1:128(客户端) node2:135(调度器) RS: node3:130 node4:132 node2添加网络适配器(仅主机模式) [rootnode2 ~]# nmtui[rootnode2 ~]#…...

时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测
时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测。基于贝叶斯(bayes)…...

注意:阿里云服务器随机分配可用区说明
阿里云服务器如有ICP备案需求请勿选择随机可用区,因为当前地域下的可用区可能不支持备案,阿里云百科分享提醒大家,如果你的购买的云服务器搭建网站应用,网站域名需要使用这台云服务器备案的话,不要随机分配可用区&…...

【Vue】使用print.js插件实现打印预览功能,超简单
目录 一、实现效果 二、实现步骤 【1】安装插件 【2】在需要打印的页面导入 【3】在vue文件中需要打印的部分外层套一层div,给div设置id。作为打印的区域 【4】在打印按钮上添加打印事件 【5】在methods中添加点击事件 三、完整代码 一、实现效果 二、实现步…...
3.5 Spring MVC参数传递
Spring MVC的Controller接收请求参数的方式有多种,本节主要介绍Spring MVC下的HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON参数传递方式,同时解决POST请求中文乱码问题。 1. HttpServletRequest参数传递 Controller RequestM…...

linux程序保护机制gcc编译选项
预备知识: 计算机内存的结构通常包括以下几个主要部分: 1.代码段(Code Segment):也称为文本段,存储程序的可执行指令。代码段是被标记为可执行的,程序从代码段中获取指令并执行。 2.数据段(Data Segment):…...
指针与引用:C语言中的内存魔法
开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 也把我学习过程中搜集的资料分享给大家,希望可以帮助大家少走弯路,链接:h…...

docker desktop搭建 nginx
【docker 桌面版】windows 使用 docker 搭建 nginx 拉取 nginx 镜像 docker pull nginx运行容器 docker run -d -p 80:8081 --name nginx nginx本地磁盘创建 nginx 目录 D:\DockerRep\nginx复制 docker 中的 nginx 配置文件 查看运行的容器 docker ps -a docker cp 9f0f82d66dd…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
Qt学习及使用_第1部分_认识Qt---Qt开发基本流程
前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...

AWSLambda之设置时区
目标 希望Lambda运行的时区是东八区。 解决 只需要设置lambda的环境变量TZ为东八区时区即可,即Asia/Shanghai。 参考 使用 Lambda 环境变量...

RabbitMQ work模型
Work 模型是 RabbitMQ 最基础的消息处理模式,核心思想是 多个消费者竞争消费同一个队列中的消息,适用于任务分发和负载均衡场景。同一个消息只会被一个消费者处理。 当一个消息队列绑定了多个消费者,每个消息消费的个数都是平摊的&a…...