HarmonyOS 鸿蒙Next app模块拆分问题:图标在A模块,A模块绘制不出来,A非根模块
HarmonyOS 鸿蒙Next app模块拆分问题:图标在A模块,A模块绘制不出来,A非根模块
单HAP包资源通过"$r"或"$rawfile"引用资源,
跨HAP/HSP包资源通过createModuleContext(moduleName)接口创建同应用中不同module的上下文,获取resourceManager对象后,调用不同接口访问不同资源。
例如:getContext.createModuleContext(moduleName).resourceManager.getStringByNameSync(‘app.string.XXX’)。文档:
api参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-resource-manager-V13
将videoFeature\src\main\ets\pages\Index.ets文件里加入图片绘制代码
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private img: ImageBitmap = new ImageBitmap("resources/base/media/icon.png")
Canvas(this.context)
.width('50%')
.height('50%')
.onReady(() => {
this.context.drawImage(this.img, 10, 10, 20, 20)
})
本地模拟情况是成功绘制的
该示例所引用的视频的资源也是在videoFeature模块的resources下,不是在启动模块entry下
ImageBitmap方法中的参数是图片路径,hsp包中无法使用路径,只能使用Resource获取资源,所以就不能使用ImageBitmap方法。
drawImage方法支持ImageBitmap或PixelMap,这里就使用PixelMap类型作为参数。
参考demo:
// library模块 Index.ets、
import { image } from '[@kit](/user/kit).ImageKit';
[@Entry](/user/Entry)
[@Component](/user/Component)
export struct Index {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
[@State](/user/State) imgPixelMap: PixelMap | null = null
async aboutToAppear() {
// getContext().createModuleContext('library') 获取当前hsp的上下文
let imageBuffer: Uint8Array =
await getContext().createModuleContext('library').resourceManager.getMediaContent($r('app.media.gg_djgcw'))
const imageSource: image.ImageSource = image.createImageSource(imageBuffer.buffer);
imageSource.createPixelMap().then((pixelMap: PixelMap) => {
this.imgPixelMap = pixelMap
this.context.drawImage(this.imgPixelMap, 10, 10, 20, 20)
})
}
build() {
Row() {
Column() {
Canvas(this.context)
.width('50%')
.height('50%')
}
.width('100%')
}
.height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next app模块拆分问题:图标在A模块,A模块绘制不出来,A非根模块的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html