HarmonyOS NEXT项目资源配置(帝心)

135 阅读3分钟

作者介绍

帝心:全网首发HarmonyOS4.0教程(哔哩哔哩)创作者。致力于推广鸿蒙教程开发。

  1. 个人网站-鸿蒙学院
  2. 语雀笔记-编程视界
  3. 飞书稀土掘金、帝心教程-gitee-源码共享、CSDN、51CTOinfoQ....等多平台全套同步教程文档。
  4. 微信公众号:不多讲故事

本文简介: Harmony项目资源配置。包括鸿蒙开发使用图片资源,字符串资源,颜色资源,HarmonyOS读取json文件等。

本文介绍项目资源使用。涉及到app入口图标或者通知图标等内容,需要使用模拟器或者真机运行。预览器无法胜任。

0. 图片资源访问

在项目中可将图片资源统一管理的到 src/main/resources/base/media 目录或者 src/main/resources/rawfile 目录中。访问方式分别如下:

// 访问 src/main/resources/base/media 下的图片资源
Image($r('app.media.dixin'))
//  访问 src/main/resources/rawfile 下的图片资源
Image($rawfile("dixin.png"))

1. app图标设置

创建项目后默认图标效果如下

01-default-logo.png

经过分析,设置该项目图标的位置在:src/main/module.json5文件中 abilities字段中的 icon 字段和 label字段

 "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:layered_image",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],

修改图标

准备好待更换的图标,放在指定目录下:src/main/resources/base/media

我在本目录下存放了一张名为 dixin.png的图片。你自行找一个适合做logo图标的效果图。

注意不要出现中文或者特殊符合作为名称,许多人的图片从网络上下载的,连名字都不修改直接复制到media目录下,因为名字包含特殊字符,导致整个项目运行报错。

修改前文提到的src/main/module.json5文件中 abilities字段中的 icon 字段的值为指定图片名即可。

 "abilities": [
      {
        "icon": "$media:dixin",
        "label": "$string:EntryAbility_label",
      }
    ],

修改app名称

有了前文修改图标的经验,只需要找到对应设置app名字的文件位置即可。如前文所示,修改$string:EntryAbility_label资源文件中的内容即可。但是该资源文件指向的内容并未单个文件。分别为如下三个文件:

  • src/main/resources/en_US/element/string.json
  • src/main/resources/en_US/element/string.json
  • src/main/resources/zh_CN/element/string.json

不必挨个修改以上 string.json文件中的 EntryAbility_label字段的值。只需要点开任何一个,点击右上角Open editor即可进入三个文件同步编辑窗口。修改效果如下:

02-set-appName.png

修改图标名称成功,效果如下图:

03-set-logoAndName-ok.png


2. 设置软件通知图标

许多软件都会随着业务场景而具备发送通知功能。如下图所示:

04-tongzhi.png

在本示例中,发送通知时,显示的图标为软件图标,并非桌面入口logo图标。如果不设置,默认为初始化的四叶草效果。

一般情况下两个图标会保持一直。设置位置:AppScope/app.json5文件中的app字段中对象中的icon字段值

{
  "app": {
    "bundleName": "com.dxin.harmonyblog",
    "vendor": "example",
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "icon": "$media:dixin",
    "label": "$string:app_name"
  }
}

3. 颜色资源使用

在开发中需要使用到许多颜色资源,而如果某个颜色数据需要在多处使用。则可配置到 资源文件 src/main/resources/base/element/color.json中,进行多处共用,使得一次配置,到处使用。同时方便同步修改。

例如:配置该应用所有页面共用的主题色。

{
  "color": [
    {
      "name": "start_window_background",
      "value": "#FFFFFF"
    },
    {
      "name": "theme_color",
      "value": "#FFC4E9C1"
    }
  ]
}

在页面中使用时,使用 $r('app.color.theme_color')的方式进行访问

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column({ space: 30 }) {
      Text(this.message)
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
    }
    .width('100%')
    .height('100%')
    .backgroundColor($r('app.color.theme_color'))
  }
}

4. 读取 json 文件内容

先有一个 json 文件:src/main/resources/rawfile/dixin.json

{
  "name": "帝心",
  "age": "33",
  "sex": "男"
}

在页面中导入即对象。

// 导入即对象
import dixin from "../../resources/rawfile/dixin.json"

@Entry
@Component
struct ResourceUse {

  build() {
    Column({ space: 30 }) {
      Text(dixin.name).fontSize(50) // 帝心
      Text(dixin.sex).fontSize(50)  // 男
      Text(dixin.age).fontSize(50)  // 33
    }
    .width('100%')
    .height('100%')
    .backgroundColor($r('app.color.theme_color'))
  }
}