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

JetpackCompose基础学习2.2

文章目录

  • 记录状态
  • 加载不同存放位置中图片:
    • 1、加载项目内置资源(res 目录)
    • 2、加载本地文件路径(SD卡等)
    • 3、加载网络图片(使用 Coil)
    • 4、加载 Assets 目录资源
    • 5、加载 Raw 目录资源

记录状态

在Compose中记录状态,对于列表的实现;

    val cardMessageList  =  remember {mutableListOf(EditInputBean(  )).map{it.copy()}.toMutableStateList()}

而其他基础类型记录状态可以简单实现,如下所示

   val endTime by remember { mutableStateOf(/* value */) }

value 中的类型可以是Int,String,Boolean等基础数据类型

加载不同存放位置中图片:

1、加载项目内置资源(res 目录)

// 加载 res/drawable 或 res/mipmap 中的图片

Icon(painter = painterResource(id = R.drawable.ic_both), // 资源IDcontentDescription = "内置图标"
)

2、加载本地文件路径(SD卡等)

// 需要 READ_EXTERNAL_STORAGE 权限

val context = LocalContext.current
val filePath = "/sdcard/Pictures/icon.png"Icon(painter = rememberImagePainter(ImageRequest.Builder(context).data(File(filePath)).apply(block = fun ImageRequest.Builder.() {placeholder(R.drawable.loading) // 加载占位图error(R.drawable.error) // 错误显示}).build()),contentDescription = "本地文件图标"
)

3、加载网络图片(使用 Coil)

// 1. 添加依赖:implementation(“io.coil-kt:coil-compose:2.4.0”)
// 2. 代码实现

Icon(painter = rememberAsyncImagePainter(model = "https://example.com/icon.png",placeholder = painterResource(R.drawable.placeholder),error = painterResource(R.drawable.error)),contentDescription = "网络图标"
)

4、加载 Assets 目录资源

// 文件需放在 src/main/assets/ 目录下
val assetPath = “icons/ic_both.png”

Icon(painter = rememberImagePainter(ImageRequest.Builder(LocalContext.current).data("file:///android_asset/$assetPath").build()),contentDescription = "Assets资源"
)

5、加载 Raw 目录资源

// 文件需放在 src/main/res/raw/ 目录下

val rawResourceId = R.raw.animated_iconIcon(painter = painterResource(id = rawResourceId),contentDescription = "Raw资源"
)
http://www.dtcms.com/a/200571.html

相关文章:

  • C++ 与 Python 内存分配策略对比
  • C# 枚举 详解
  • LeetCode 217.存在重复元素
  • C++:因子问题
  • 【TTS回顾】Bert-VITS2深度解析:融合BERT的多语言语音合成模型
  • Python爬虫实战:获取国家统计网最新消费数据并分析,为从业者做参考
  • Spring Boot入门案例(Spring Initializr方式,IDEA版)
  • FANUC发那科焊接机器人智能气阀
  • Windows环境使用NVM高效管理多个Node.js版本
  • 可重入(Reentrant) vs 线程安全(Thread-Safe)
  • AI Agent开发第71课-一个完善的可落地企业AI Agent全架构
  • 视觉-语言导航:综述与类别
  • idea2024 不知道安装了什么插件,界面都是中文的了,不习惯,怎么修改各个选项改回英文
  • 网络安全-等级保护(等保) 2-7 GB/T 25058—2019 《信息安全技术 网络安全等级保护实施指南》-2019-08-30发布【现行】
  • upload-labs靶场通关详解:第11关
  • Java后端面试八股文大全(2025最新版)
  • 【八股战神篇】Java多线程高频面试题(JUC)
  • MongoDB及spring集成
  • SGLang和vllm比有什么优势?
  • 本案例介绍ABB电机保护单元如何走profibus总线通讯
  • stm32week16
  • MIME类型详解及应用案例
  • 【QT】一个界面中嵌入其它界面(二)
  • 数据库存储空间告急?磁盘清理与归档策略全解析
  • docker介绍与常用命令汇总
  • 火山 RTC 引擎9 ----集成 appkey
  • BM25(Best Matching 25)介绍与使用
  • 基于Zynq SDK的LWIP UDP组播开发实战指南
  • 对抗性机器学习:AI模型安全防护新挑战
  • 在linux平台下利用mingw64编译windows程序