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

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源,请执行以下操作:

  1. 添加库依赖项。

  2. 为每种资源创建必要的目录。

  3. 为限定资源创建其他目录(例如,深色 UI 主题或本地化字符串的不同图像)。

依赖项和目录设置

要访问多平台项目中的资源,请添加库依赖项并组织项目目录中的文件:

  1. 在目录中的文件中,向源代码集添加依赖项:build.gradle.kts composeApp commonMain

  2. kotlin {sourceSets {commonMain.dependencies {implementation(compose.components.resources)}}
    }

    要直接引用库,请使用 Maven Central 中工件页面中的完全限定名称。

  3. 在要将资源添加到的源集目录中创建一个新目录(在本例中):composeResourcescommonMain

    编写资源项目结构

  4. 根据以下规则组织目录结构:composeResources

    • 图像应位于目录中。drawable

    • 字体应位于目录中。font

    • 字符串应位于目录中。values

    • 其他文件应位于目录中,并具有您可能认为合适的任何文件夹层次结构。files

自定义资源目录

在文件块中,您可以为每个源集指定自定义资源目录。这些自定义目录中的每一个还应包含与 default 相同的文件:具有图像的子目录、字体的子目录等。compose.resources {}build.gradle.ktscomposeResourcesdrawablefont

一个简单的示例是指向特定文件夹:

compose.resources {customDirectory(sourceSetName = "desktopMain",directoryProvider = provider { layout.projectDirectory.dir("desktopResources") })
}

您还可以设置一个由 Gradle 任务填充的文件夹,例如,包含下载的文件:

abstract class DownloadRemoteFiles : DefaultTask() {@get:OutputDirectoryval outputDir = layout.buildDirectory.dir("downloadedRemoteFiles")@TaskActionfun run() { /* your code for downloading files */ }
}compose.resources {customDirectory(sourceSetName = "iosMain",directoryProvider = tasks.register<DownloadRemoteFiles>("downloadedRemoteFiles").map { it.outputDir.get() })
}

限定 符

有时,同一资源应根据环境(如区域设置、屏幕密度或界面主题)以不同的方式呈现。例如,您可能需要本地化不同语言的文本或调整深色主题的图像。为此,该库提供了特殊的限定符。

除目录中的原始文件外,所有资源类型都支持限定符。使用连字符向目录名称添加限定符:files

多平台资源中的限定符

该库支持(按优先级顺序)以下限定符:language、theme 和 density。

  • 不同类型的限定符可以一起应用。例如,“drawable-en-rUS-mdpi-dark”是美国区域中的英语图像,适用于深色主题的 160 DPI 屏幕。

  • 如果无法访问具有 requested 限定符的资源,则改用默认资源(不带限定符)。

语言和区域限定符

您可以组合使用语言和区域限定符:

  • 该语言由两个字母 (ISO 639-1) 或三个字母 (ISO 639-2) 的语言代码定义。

  • 您可以将两个字母的 ISO 3166-1-alpha-2 区域代码添加到您的语言代码中。区域代码必须具有小写前缀,例如:rdrawable-spa-rMX

语言和区域代码区分大小写。

主题限定符

您可以添加 “light” 或 “dark” 限定符。然后,Compose Multiplatform 会根据当前系统主题选择必要的资源。

密度限定符

您可以使用以下密度限定符:

  • “ldpi” – 120 DPI,0.75 倍密度

  • “mdpi” – 160 DPI,1x 密度

  • “hdpi” – 240 DPI,1.5 倍密度

  • “xhdpi” – 320 DPI,2 倍密度

  • “xxhdpi” – 480 DPI,3 倍密度

  • “xxxhdpi” – 640dpi,4 倍密度

根据系统中定义的屏幕密度选择资源。

http://www.lryc.cn/news/512031.html

相关文章:

  • MT6765核心板_MTK6765安卓核心板规格参数_联发科MTK模块开发
  • conda常用维护命令
  • Html——10 关键字和描述
  • Mysql(MGR)和ProxySQL搭建部署-Docker版本
  • QML学习(一) Qt Quick和QML介绍以及适用场景说明
  • 深入理解 PyTorch 的 view() 函数:以多头注意力机制(Multi-Head Attention)为例 (中英双语)
  • 使用PHP函数 “setcookie“ 设置cookie
  • redis优化
  • 数据分析的革命——解读云数据库 SelectDB 版的力量
  • Ngnix介绍、安装、实战及用法!!!
  • 算法基础一:冒泡排序
  • 云开发实战教程:手把手教你高效开发应用
  • Git基本操作快速入门(30min)
  • VS Code AI开发之Copilot配置和使用详解
  • QT中使用OpenGL function
  • STM32-笔记16-定时器中断点灯
  • Live555、FFmpeg、GStreamer介绍
  • oracle基础:理解 Oracle SQL 中的 WHERE 后的 (+) 用法
  • 【linux】进程间通信(IPC)——匿名管道,命名管道与System V内核方案的共享内存,以及消息队列和信号量的原理概述
  • 【深度学习】卷积网络代码实战ResNet
  • org.apache.zookeeper.server.quorum.QuorumPeerMain
  • oscp学习之路,Kioptix Level2靶场通关教程
  • SkyWalking java-agent 是如何工作的,自己实现一个监控sql执行耗时的agent
  • 每天40分玩转Django:Django表单集
  • 查看vue的所有版本号和已安装的版本
  • 钉钉h5微应用,鉴权提示dd.config错误说明,提示“jsapi ticket读取失败
  • 【openGauss】正则表达式次数符号“{}“在ORACLE和openGauss中的差异
  • 宏任务和微任务的区别
  • 数据库系统原理复习汇总
  • Linux day1204