​代码实现

  • api讲解

getStringArray

getStringArray(resId: number, callback: AsyncCallback<Array>): void

用户获取指定资源ID对应的字符串数组,使用callback形式返回字符串数组。

系统能力:SystemCapability.Global.ResourceManager
参数:
参数名 类型 必填 说明
resId number 资源ID值
callback AsyncCallback<Array> 异步回调,用于返回获取的字符串数组
示例:
  //todo 获取ResourceManager对象
resourceManager.getResourceManager((error, mgr) => {
if(error!=null){
//todo 获取ResourceManager失败
console.log("ResourceManager error is " + error);
}else{
//todo 获取ResourceManager成功 调用getStringArray获取数组集合
mgr.getStringArray($r('app.strarray.test').id, (error, value) => {
//todo 获取StringArray 失败
if (error != null) {
console.log("error is " + error);
} else {
//todo 获取StringArray 成功 并且把value转化为string
this. result = value.toString();
}
});
}
});

getMediaBase64

getMediaBase64(resId: number, callback: AsyncCallback): void

用户获取指定资源ID对应的图片资源Base64编码,使用callback形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager
参数:
参数名 类型 必填 说明
resId number 资源ID值
callback AsyncCallback 异步回调,用于返回获取的图片资源Base64编码
示例:
  //todo 获取ResourceManager对象
resourceManager.getResourceManager((error, mgr) => {
if(error!=null){
//todo 获取ResourceManager失败
console.log("ResourceManager error is " + error);
}else{
//todo 获取ResourceManager成功 调用getMediaBase64获取base64字符串
mgr.getMediaBase64($r('app.media.result').id, (error, value) => {
//todo 获取base64字符串失败
if (error != null) {
console.log("error is " + error);
} else {
//todo 获取base64字符串成功
this.Base64Str=value
}
});
}
});

  • 准备工作

1.在resources\base\element新建一个strarry文件命名为strarr.json,文件内容如下

{
"strarray": [
{
"name": "test",
"value": [
{
"value": "this is value One"
},
{
"value": "this is value Two"
},
{
"value": "this is value Three"
}
]
}
]
}

2.准备一张图片(如下图所示)并且放在resources\base\media文件目录下,取名为result.png

  • 绘画组件并实现功能

绘画三个“text”组件,显示内容分别为“读取数组集合”、“结果:”、“加载图片”和一个“Image”组件用于显示“加载图片”显示的base64字符型,分别实现“读取数组集合”、和“加载图片”的点击功能,具体详细的内容描述看代码注释

import resourceManager from '@ohos.resourceManager';
@Entry
@Component
struct Index {
@State Base64Str:string=""
@State result:string=""
//todo 加载图片获取base64点击事件函数
public getMediaBase64(){
//todo 获取ResourceManager对象
resourceManager.getResourceManager((error, mgr) => {
if(error!=null){
//todo 获取ResourceManager失败
console.log("ResourceManager error is " + error);
}else{
//todo 获取ResourceManager成功 调用getMediaBase64获取base64字符串
mgr.getMediaBase64($r('app.media.result').id, (error, value) => {
//todo 获取base64字符串失败
if (error != null) {
console.log("error is " + error);
} else {
//todo 获取base64字符串成功
this.Base64Str=value
}
});
}
});
}
//todo 实现读取数组集点击事件函数
public getStringArray(){
//todo 获取ResourceManager对象
resourceManager.getResourceManager((error, mgr) => {
if(error!=null){
//todo 获取ResourceManager失败
console.log("ResourceManager error is " + error);
}else{
//todo 获取ResourceManager成功 调用getStringArray获取数组集合
mgr.getStringArray($r('app.strarray.test').id, (error, value) => {
//todo 获取StringArray 失败
if (error != null) {
console.log("error is " + error);
} else {
//todo 获取StringArray 成功 并且把value转化为string
this. result = value.toString();
}
});
}
});
}
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Text('读取数组集合')
.fontSize(20)
.width("100%")
.textAlign(TextAlign.Center)
.backgroundColor("#ed6262")
//todo 实现读取数组集合点击事件
.onClick(this.getStringArray.bind(this))
//todo 显示结果
Text('结果:'+this.result)
.fontSize(20)
.fontWeight(FontWeight.Bold)
.margin({top:10})
Text('加载图片')
.fontSize(20)
.margin({top:10})
.width("100%")
.backgroundColor("#ed6262")
.textAlign(TextAlign.Center)
//todo 实现加载图片点击事件
.onClick(this.getMediaBase64.bind(this))
//todo 显示图片结果
Image(this.Base64Str)
.width(100).height(100)
.backgroundColor("#ed6262")
.margin({top:10})
}
.width('100%')
.height('100%')
}
}

预览效果如下

运行效果

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

【ARK UI】HarmonyOS ETS 资源管理基本使用的更多相关文章

  1. 【ARK UI】HarmonyOS 从相册选择图片并显示到Image组件上

    ​ 参考资料 [Harmony OS][ARK UI]ETS 上下文基本操作 [Harmony OS][ARK UI]ets使用startAbility或startAbilityForResult方式 ...

  2. 【ARK UI】HarmonyOS ETS如何创建PixeMap并显示Image组件上

    ​参考资料 图片处理 Context模块 api讲解 image.createPixelMap createPixelMap(number: fd, options: InitializationOp ...

  3. 100行代码实现HarmonyOS“画图”应用,eTS开发走起!

    本期我们给大家带来的是"画图"应用开发者Rick的分享,希望能给你的HarmonyOS开发之旅带来启发~ 介绍 2021年的华为开发者大会(HDC2021)上,HarmonyOS ...

  4. HarmonyOS Java UI之DirectionalLayout布局

    在之前的章节中我使用的是Java 代码构建UI界面,从本节开始,将使用XML构建UI界面. 使用XML构建UI(默认你已经会在项目中创建XML布局文件)界面相对Java代码构建的好处是:结构清晰,代码 ...

  5. HarmonyOS Java UI之StackLayout布局示例

    StackLayout简介 StackLayout意为堆叠布局,用于在屏幕上保留一个区域来显示组件,实现特殊的功能.通常,堆叠布局中只应该放置一个子组件,如果存在多个子组件,则显示最新的组件.这个布局 ...

  6. HarmonyOS Java UI之DependentLayout布局示例

    DependentLayout简介 DependentLayout意为相对位置布局,与DirectionalLayout相比较有更多的排布方式,每个组件可以指定相对于其他同级组件的位置,也可以指定相对 ...

  7. HDC技术分论坛:HarmonyOS新一代UI框架的全面解读

    作者:yuzhiqiang,UI编程框架首席技术专家 在Harmony 3.0.0开发者预览版中,包含了新一代的声明式UI框架ArkUI 3.0.多语言跨平台编译器ArkCompiler 3.0.跨端 ...

  8. HarmonyOS UI组件在线预览,程序员直呼“不要太方便~”

    一.介绍 以往大家如果想查看组件的使用效果,需要打开DevEco Studio构建工程.现在为了便于大家高效开发,文档上线了JS UI组件在线预览功能,无需本地构建工程,在线即可修改组件样式等参数.一 ...

  9. 【HarmonyOS】【Demo】【JAVA UI】 鸿蒙怎么在Webview上添加组件

    在大家HarmonyOS开发中,Webview组件上添加组件可能是很常见的功能了,HarmonyOS的webview和Android的webwiew存在一点点区别,今天来实现这个功能 使用项目布局显示 ...

随机推荐

  1. 用HMS Core地图服务自定义地图样式,给你的应用制作专属个性化地图

    不同行业的开发者对地图样式的展示需求差异很大.例如,物流类应用希望地图样式简洁一些,重点突出城市分布和快递路径:AR游戏类应用中的地图色彩需要和游戏UI适配,做的更酷炫一些:景区导览应用中的地图样式要 ...

  2. 看看CabloyJS是如何实现编辑页面脏标记的

    应用场景 我们在使用Word.Excel时,当修改了内容之后在标题栏会显示脏标记,从而可以明确的告知用户内容有变动.此外,如果在没有保存的情况下关闭窗口,系统会弹出提示框,让用户选择是否放弃修改 那么 ...

  3. 剖析虚幻渲染体系(15)- XR专题

    目录 15.1 本篇概述 15.1.1 本篇内容 15.1.2 XR概念 15.1.2.1 VR 15.1.2.2 AR 15.1.2.3 MR 15.1.2.4 XR 15.1.3 XR综述 15. ...

  4. while循环结构

    一.循环: 1.场景: ①.用户名和密码,反复输入 ②.计算1-100之间 ③.游戏,重生 ④.-- 2.方式 ①.while ②.for 3.while格式 while 条件:要循环执行的代码 布尔 ...

  5. JUnit 5 - Nested Test 内嵌测试

    本文地址:https://www.cnblogs.com/hchengmx/p/15158658.html 1. Nested用来解决什么问题 简单地说,Nested用来解决,随着Case越来越多,C ...

  6. flink窗口分类

    窗口分类 按照驱动类型分类 窗口本身是截取有界数据的一种方式,所以窗口一个非常重要的信息就是"怎样截取数据".换句话说,就是以什么标准来开发和结束数据的截取. 按照驱动类型分类主要 ...

  7. SAP OOALV 添加状态灯

    *&---------------------------------------------------------------------* INCLUDE <icon>. T ...

  8. 基于Svelte3.x桌面端UI组件库Svelte UI

    Svelte-UI,一套基于svelte.js开发的桌面pc端ui组件库 最近一直忙于写svelte-ui,一套svelte3开发的桌面端ui组件库.在设计及功能上借鉴了element-ui组件库.所 ...

  9. 腾讯云原生数据库TDSQL-C架构探索和实践

    作为云原生技术先驱,腾讯云数据库内核团队致力于不断提升产品的可用性.可靠性.性能和可扩展性,为用户提供更加极致的体验.为帮助用户了解极致体验背后的关键技术点,本期带来腾讯云数据库专家工程师王鲁俊给大家 ...

  10. YYYYMMdd和yyyyMMdd的区别

    YYYYMMdd的 YYYY 是表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年.比如今天是2021-12-29 星期三,然后本周六是2022-01-01,存 ...