当前位置: 首页 > 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资源"
)

相关文章:

  • 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总线通讯
  • 外交部:将持续便利中外人员往来,让“中国游”金字招牌更加闪耀
  • 520、521婚登预约迎高峰?上海民政:将增派力量,新人可现场办理
  • 《缶翁的世界》首发:看吴昌硕王一亭等湖州籍书画家的影响
  • 西藏普兰县公安局网安大队向自媒体人宣传网络安全知识
  • 上海小学生暑(寒)托班会增设开办期数、延长办班时间吗?团市委回应
  • 看展 | 黄永玉新作展,感受赤子般的生命力