ArkUI学习之资源访问

OpenHarmony 应用资源分为两类,一类是应用资源,另一类是系统资源 

一、访问应用资源

base 目录下的资源文件会被编译成二进制文件并且给这些资源赋予唯一的 ID ,使用相应资源的时候通过资源访问符 $r('app.type.name') 的形式,

  • app 代表是应用内 resources 目录中定义的资源;
  • type 表示资源类型,可取值有 color、 float、 string 、 media 等;
  • name 表示资源的文件名字。

例如 string.json 中新加 name 为 text_string 的字符串,则访问该字符串资源为 $r('app.string.text_string')。

笔者在 base 目录下新建 float.json 和 color.json 文件,分别存放字体和颜色,资源内容如下图所示:

通过 $('app.type.name') 访问资源的简单样例如下所示:

@Entry @Component struct ResourceTest {
  build() {
    Column({space: 10}) {
      Text($r('app.string.text_string'))                       // 访问字符串资源
        .size({width: 300, height: 120})                       // 设置尺寸
        .fontSize($r('app.float.text_size'))                   // 访问字体大小
        .fontColor($r('app.color.text_color'))                 // 访问字体颜色
        .backgroundImage($r('app.media.test'), ImageRepeat.XY) // 设备背景图片
    }
    .width('100%')
    .height('100%')
    .padding(10)
  }
}

样例运行结果如下图所示:

二、访问系统资源

系统资源包含 颜色 、 圆角 、 字体 、 间距 、 字符串 及 图片 等,通过使用系统资源,不同的开发者可以开发出具有相同视觉风格的应用,开发者可以通过 $r('sys.type.name') 的形式引用系统资源,和访问应用资源不同的是使用 sys 代表系统资源,其它和访问应用资源规则一致。

访问系统资源简单样例如下所示:

@Entry @Component struct ResourceTest {
  build() {
    Column() {
      Text('Hello')
        .fontColor($r('sys.color.ohos_id_color_emphasize'))
        .fontSize($r('sys.float.ohos_id_text_size_headline1'))
        .fontFamily($r('sys.string.ohos_id_text_font_family_medium'))
        .backgroundColor($r('sys.color.ohos_id_color_palette_aux1'))
      Image($r('sys.media.ohos_app_icon'))
        .border({
          color: $r('sys.color.ohos_id_color_palette_aux1'),
          radius: $r('sys.float.ohos_id_corner_radius_button'),
          width: 2
        })
        .margin({
          top: $r('sys.float.ohos_id_elements_margin_horizontal_m'),
          bottom: $r('sys.float.ohos_id_elements_margin_horizontal_l')
        })
        .height(200)
        .width(300)
    }
    .padding(10)
    .width("100%")
    .height("100%")
  }
}

样例运行结果如下图所示:

 

posted on 2024-04-17 17:38  梁飞宇  阅读(52)  评论(0)    收藏  举报