【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.rhkb.cn/news/497677.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线索二叉树的实现(c语言)

一、前言&#xff1a;什么是二叉树的线索化&#xff1f;&#xff08;为什么要有二叉树的线索化&#xff1f;&#xff09; 通过前面内容的学习&#xff0c;我们知道了二叉树的存储结构其实是通过二叉链表的方式实现的。但二叉链表由于每个结点均有左右孩子域&#xff0c;这使得…

通过python对excel进行数据分析和可视化

import pandas as pd import matplotlib.pyplot as plt import seaborn as snsfile_path "C:\\Users\\86138\\Desktop\\book_list-计算机-机器学习-linux-android-数据库-互联网.xlsx" data pd.read_excel(file_path)need_data data[[书名, 评分, 评价人数]].copy…

考研互学互助系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

SpringCloud整合skywalking实现链路追踪和日志采集

1.部署skywalking https://blog.csdn.net/qq_40942490/article/details/144701194 2.添加依赖 <!-- 日志采集 --><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version&g…

【Spring】 Bean 注入 HttpServletRequest 能保证线程安全的原理

文章目录 前言1. 图示2. 源码坐标后记 前言 今天看了一段老业务代码&#xff0c;HttpServletRequest 被注入后直接用于业务逻辑。 好奇Spring是如何解决线程安全问题。 Controller public class TestController {ResourceHttpServletRequest request;ResponseBodyGetMapping(…

0基础学前端-----CSS DAY11

0基础学前端-----CSS DAY11 视频参考&#xff1a;B站Pink老师 今天是CSS学习的第十一天&#xff0c;今天开始的笔记对应Pink老师课程中的CSS第六天的内容。 本节重点&#xff1a;CSS定位 本章目录 0基础学前端-----CSS DAY11本节目标1. 定位1.1 为什么需要定位1.2 定位组成1.…

frameworks 之 WMS添加窗口流程

frameworks 之 触摸事件窗口查找 1.获取WindowManager对象2.客户端添加view3. 服务端添加view (NO_SURFACE)4.重新布局 (DRAW_PENDING)4.1 创建 SurfaceControl 5.通知绘制 (COMMIT_DRAW_PENDING&#xff0c; READY_TO_SHOW&#xff0c; HAS_DRAWN)5. 1 布局测量和刷新 6.总结 …

ARM单片机定时器

定时器分类 定时器资源。基于GD32F103

【Java】IO流练习

IO流练习 题干&#xff1a; 根据指定要求&#xff0c;完成电话记录、 注册、登录 注册 题干&#xff1a; 完成【注册】功能&#xff1a; 要求&#xff1a; 用户输入用户名、密码存入users.txt文件中 若users.txt文件不存在&#xff0c;创建该文件若users.txt文件存在 输入…

Windows API Set:那些“只存在但不被使用“的DLL

API Set 是什么&#xff1f; 想象一下&#xff0c;Windows就像一个大型图书馆&#xff0c;而API Set就是这个图书馆的索引系统。但这个索引系统非常特别&#xff1a;它是直接内置在Windows加载器中的"虚拟目录"。 // 一个典型的API Set映射示例 api-ms-win-core-mem…

小程序配置文件 —— 12 全局配置 - pages配置

全局配置 - pages配置 在根目录下的 app.json 文件中有一个 pages 字段&#xff0c;这里我们介绍一下 pages 字段的具体用法&#xff1b; pages 字段&#xff1a;用来指定小程序由哪些页面组成&#xff0c;用来让小程序知道由哪些页面组成以及页面定义在哪个目录&#xff0c;…

正则表达式 - 使用总结

以下列出了一些常用正则表达式的使用总结&#xff1a; 匹配基本字符 使用普通字符匹配&#xff1a;普通字符&#xff08;如字母、数字、符号&#xff09;在正则表达式中表示自身&#xff0c;例如匹配 "runoob"&#xff1a;/runoob/。 使用元字符 . 匹配任意字符&…

OpenCV计算机视觉 03 椒盐噪声的添加与常见的平滑处理方式(均值、方框、高斯、中值)

上一篇文章&#xff1a;OpenCV计算机视觉 02 图片修改 图像运算 边缘填充 阈值处理 目录 添加椒盐噪声 图像平滑常见处理方式 均值滤波 (blur) 方框滤波 (boxFilter) ​高斯滤波 (GaussianBlur) 中值滤波 (medianBlur) 添加椒盐噪声 def add_peppersalt_noise(image, n…

告别 $arr[0]: PHP 和 Laravel 中更优雅的数组处理方式

你是否曾经历过这样的惊魂时刻&#xff1a;线上代码突然崩溃&#xff0c;只因访问了一个不存在的数组元素&#xff1f;或者更糟的是&#xff0c;应用开始疯狂抛出错误&#xff0c;而你却毫无头绪&#xff1f;这一切的罪魁祸首可能就是看似人畜无害的硬编码数组索引&#xff0c;…

uniapp 微信小程序 数据空白展示组件

效果图 html <template><view class"nodata"><view class""><image class"nodataimg":src"$publicfun.locaAndHttp()?localUrl:$publicfun.httpUrlImg(httUrl)"mode"aspectFit"></image>&l…

【开源免费】基于SpringBoot+Vue.JS网上摄影工作室系统(JAVA毕业设计)

本文项目编号 T 103 &#xff0c;文末自助获取源码 \color{red}{T103&#xff0c;文末自助获取源码} T103&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

SOEM裸机移植

源码地址 https://gitee.com/rathon/apollof429-v2.git 还有一些移植细节可以参考我之前写的一些博客 硬件平台&#xff1a; 正点原子APOLLOF429V2开发板 开发环境 stm32cubemx6.2.0版本&#xff0c;用的库为STM32Cube_FW_F4_V1.26.2&#xff0c;开发软件为STM32cubeide …

智慧地下采矿:可视化引领未来矿业管理

图扑智慧地下采矿可视化平台通过整合多源数据&#xff0c;提供实时 3D 矿井地图及分析&#xff0c;提升了矿产开采的安全性与效率&#xff0c;为矿业管理提供数据驱动的智能决策支持&#xff0c;推动行业数字化转型。

基于Docker+模拟器的Appium自动化测试(二)

模拟器的设置 打开“夜神模拟器”的系统设置&#xff0c;切换到“手机与网络”页&#xff0c;选中网络设置下的“开启网络连接”和“开启网络桥接模式”复选框&#xff0c;而后选择“静态IP”单选框&#xff0c;在IP地址中输入“192.168.0.105”&#xff0c;网关等内容不再赘述…

紫光同创-盘古200pro+开发板

本原创文章由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 一、开发系统介绍 开发系统概述 MES2L676-200HP 开发板采用紫光同创 logos2 系列 FPGA&#xff0c;型号&#xff1a;…