【每日学点鸿蒙知识】上架流程、h5返回收拾拦截、两个枚举类型之间转换、hvigorw命令、绘制本地图片
1、HarmonyOS 上架流程?
-
上架流程,请参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-publish-app-V5
-
上架的一些条件,也请 这边悉知,参考链接:https://developer.huawei.com/consumer/cn/doc/app/agc-help-releaseapkrpk-0000001106463276
2、h5和原生的交互,h5页面跳转很多层,是否支持拦截H5返回手势
可以通过webview提供的接口accessBackward设置当前页面是否可后退。文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#accessbackwarddeprecated
3、HarmonyOS 两个枚举类型之间转换问题?
两个枚举类型的变量之间如何转换赋值。
export enum m1{
a = 1,
b = 2
}
export enum m2{
c = 1,
d = 2
}
mm:m1 = m1.a;
nn:m2 = m2.c;
如何将nn 赋值给mm
确定两个枚举类型是否相同或兼容。使用as关键字进行类型转换。
示例代码:
enum Color {
RED, GREEN, BLUE;
}
enum Size {
SMALL, MEDIUM, LARGE;
}
var red: Color = Color.RED;
var small: Size = Size.SMALL;
// 将Color类型的变量red赋值给Size类型的变量small
var redAsSize: Size = red as Size;
在这个示例中,我们首先定义了两个枚举类型Color和Size。然后,我们创建了一个Color类型的变量red和一个Size类型的变量small。最后,我们使用as关键字将red赋值给small,前提是red可以被转换为Size类型。
需要注意的是,这种类型转换必须满足参数类型要求。如果不满足这些要求,编译器会报错,或者在运行时抛出异常。
4、HarmonyOS 流水线 使能daemon问题?
执行命令:
hvigorw --mode module -p module=phone@default,basicInterface@default,common@default,configuration@default,login@default,featureInterface@default,easyui@default,personalCenter@default,company@default,debug@default,resume@default,selector@default,personalInfo@default,position@default,easybusiness@default,message@default,imagePicker@default,basicdata@default,location@default -p product=default -p buildMode=debug assembleHap assembleHsp --analyze --parallel --incremental --daemon
报错:
> hvigor ERROR: Failed :basicInterface:default@ProcessLibs...
> hvigor ERROR: ENOENT: no such file or directory, uv_cwd
> hvigor ERROR: BUILD FAILED in 678 ms
将 使能daemon关闭以后正常 --no-daemon
请问如果要打开需要如何配置?
命令行和流水线一般使用commandline-tools下的hvigorw,这个hvigorw会设置sdk的环境变量(sdk在commandline-tools中有内置) 如果要使用IDE下的hvigor.js在命令行中使用,需要设置DEVECO_SDK_HOME环境变量指向sdk
5、HarmonyOS Canvas.drawImage怎么绘制本地图片,并指定大小?
import image from '@ohos.multimedia.image'
@Entry
@Component
struct Index {
@State message: string = '点击获取图片尺寸';
@State imagePixelMap: PixelMap | undefined = undefined;
@State imageWidth: number = -1;
@State imageHeight: number = -1;
build() {
Row() {
Column() {
Button(this.message)
.fontSize(30)
.width(350)
.height(150)
.fontWeight(FontWeight.Bold)
.onClick(() => {
getContext(this).resourceManager.getMediaContent($r("app.media.startIcon")).then((data) => {
let arrayBuffer = data.buffer.slice(data.byteOffset, data.byteLength + data.byteOffset)
let imageSource: image.ImageSource = image.createImageSource(arrayBuffer);
imageSource.getImageInfo((err,
value) => { //获取图片资源的尺寸
console.log(`图片的尺寸为:width:${value.size.width}height:${value.size.height}`)
if (err) {
return;
} // 转PixelMap
let opts: image.DecodingOptions = {
editable: true,
desiredSize: {
height: value.size.height,
width: value.size.width
} // desiredSize: { height: 300, width: 200 }
};
imageSource.createPixelMap(opts, (err, pixelMap) => {
this.imagePixelMap = pixelMap
this.imagePixelMap.getImageInfo().then((value) => {
this.imageWidth = value.size.width
this.imageHeight = value.size.height
})
})
})
})
})
Image(this.imagePixelMap).width(this.imageWidth).height(this.imageHeight)
Text(`图片尺寸信息:width: ${this.imageWidth}, height: ${this.imageHeight}`)
}
}
}
}