awtk/docs/app_assets.md
2022-09-22 18:00:25 +08:00

93 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AWTK 应用程序中的资源
## 一、项目目录结构
使用 [AWTK Designer](https://awtk.zlg.cn/) 下文简称Designer可以创建 AWTK 项目,默认情况下,项目的目录结构如下表所示:
| 项目 | 说明 |
| ------------- | ----------------------------------------------------------------------------- |
| 3rd | 存放 Designer 安装的插件(自定义控件)以及其他第三方库。 |
| bin | 存放可执行文件和动态库。 |
| design | 存放项目的原始资源可在Designer上编辑。 |
| lib | 存放静态库。 |
| res | 存放项目运行时需要的资源,由 Designer 打包或者scripts/update_res.py脚本生成。 |
| scripts | 存放编译项目和打包资源的脚本。 |
| src | 存放项目的源码文件。 |
| tests | 存放项目的单元测试代码。 |
| project.json | 项目的描述文件包含项目设置等信息Designer 可通过该文件打开项目。 |
| manifest.json | 校验文件,保存项目文件的 md5 信息。 |
| SConstruct | SCons编译脚本。 |
## 二、资源目录结构
项目创建后design 目录默认有一个名称为"default"的主题目录。主题的目录结构如下表所示:
| 项目 | 说明 |
| ------- | ------------------------------------------------------------------------------- |
| data | 存放该主题的自定义资源即除了字体、图片、语言、样式、UI、XML、脚本之外的文件。 |
| fonts | 存放该主题使用的字体,内涵子目录详见下文。 |
| images | 存放该主题使用的图片,内涵子目录详见下文。 |
| scripts | 存放该主题使用的脚本文件。 |
| strings | 存放该主题使用的语言文件。 |
| styles | 存放该主题使用的样式文件。 |
| ui | 存放该主题使用的UI文件。 |
(1) fonts 目录中包含以下子目录:
- config临时目录存放记录字体的保留字符的文件
- origin临时目录存放被裁剪的TTF的原始文件。
(2) images 目录中包含以下子目录:
- xx存放与屏幕密度无关的图片
- x1存放普通密度屏幕上使用的图片
- x2存放2倍密度屏幕上使用的图片
- x3存放3倍密度屏幕上使用的图片
- svg存放svg图片。
> 备注AWTK运行时会优先在 x1、x2、x3 目录中的其中一个查找图片比如LCD的DPR=1则在x1目录如果找不到则在xx目录中查找。
## 三、如何使用常规资源
这里说的常规资源指的是 字体、图片、UI、样式等资源具体的使用方法可以参考文档[AWTK 中的资源管理](./assets_manager.md)。
## 四、如何使用data目录下的资源自定义资源
主题中的 data 目录可以存放除了字体、图片、语言、样式、UI、XML、脚本之外的文件比如项目的配置文件或者其他自定义类型的文件。这里假设项目存在一个配置文件 conf.json内容如下
```json
{
"tom": {
"name": "tom",
"age": 100
},
"jim": {
"name": "jim",
"age": 200
},
"kite": {
"name": {
"first": "kite",
"last": "gates"
}
}
}
```
可以将它存放在项目的 design/default/data 目录中,其中"default"是主题名称,使用 Designer 或执行 scripts/update_res.py 脚本打包资源时,会自动将该目录下的资源打包到 res 的对应目录中。
在代码中,可以通过 assets\_manager\_ref 接口查找并引用资源,代码如下:
```c
assets_manager_t* am = assets_manager(); /* 获取资源管理器对象 */
asset_info_t* info = assets_manager_ref(am, ASSET_TYPE_DATA, "conf.json"); /* 查找并引用资源对应资源 */
/* 获取自定义资源并做处理,这里仅打印信息,可根据实际情况编写处理代码 */
log_debug("%s\n", (char*)info->data);
assets_manager_unref(am, info); /* 释放引用资源 */
```
## 五、相关文档
* [AWTK 中的资源管理](./assets_manager.md)