【HarmonyOS开发】控件开发过程中,知识点记录

1、问题记录及解决方案

1.1 资源(Icon&i18n)问题

控件:只有一个JS文件,不会将任何资源型文件(图片、字体、默认文字等)打包到SO中。因此,当我们开发控件时,需要将需要使用到的资源,提前申请,放入资源仓库,然后等官方集成到系统中。

注意:资源都需要集成得到系统的room中,因此该步骤需要提前准备。

仓库:https://gitee.com/openharmony/utils_system_resources

图片资源存放位置:

systemres/main/resources/base/media/ohos_xxx.svg

国际化资源存放位置:

中文:systemres/main/resources/zh_CN/element/string.json

英文:systemres/main/resources/base/element/string.json

配置对应的ID:

systemres/main/resources/base/element/id_defined.json

1.2 媒体查询

获取系统主题色(深色/浅色),目前无可用API,如需使用,只能使用系统颜色,系统自动切换。

更新时间:2023/12/10

文档中心

1.3 容器问题

ArkUI通过****onAreaChange获取的的宽**** 高包含(content+padding+border+margin),和Css不同,计算高度时,需要注意。

我们开发前,最好搞明白,各个容器的具体作用。

参考:https://juejin.cn/post/7304938797865844771eg

eg: 复杂Grid布局的实现

TypeScript 复制代码
Grid() {
    GridItem() {}
    GridItem() {}
    GridItem() {}
    .columnStart(1)
    .columnEnd(2)

    GridItem() {}
    .rowStart(1)
    .rowEnd(2)
    GridItem() {}
    GridItem() {}
    GridItem() {}
    
    GridItem() {}
    .columnStart(1)
    .columnEnd(3)
}
.rowsTemplate('1fr 1fr 1fr')
.columnsTemplate('1fr 1fr 1fr 1fr')
.columnsGap(8)
.rowsGap(8)

1.4 API问题

编译后的SO出现闪退问题,有可能系统还未支持,eg:curve动效库等;

2、开源库开发规范

  • 控件中不允许使用Base64图片,只能使用系统图标,但是系统中并未全部集成(https://developer.harmonyos.com/cn/design/harmonyos-icon);
  • 枚举值命名规范是全大写,并且值为number时,从0开始,key如果为多个字符使用_间隔;
  • 变量名规范为小驼峰,eg:hardwareStates;
  • 接口、枚举、Type的命名规范为大驼峰,eg: IsSelectedState;
  • 不建议使用@Link向外暴露接口,组件使用者无法拦截数据的变化;
  • 如果使用到数字,需要定义为常量;

未完,待续...

相关推荐
whysqwhw1 小时前
鸿蒙分布式投屏
harmonyos
whysqwhw3 小时前
鸿蒙AVSession Kit
harmonyos
whysqwhw4 小时前
鸿蒙各种生命周期
harmonyos
whysqwhw5 小时前
鸿蒙音频编码
harmonyos
whysqwhw5 小时前
鸿蒙音频解码
harmonyos
whysqwhw6 小时前
鸿蒙视频解码
harmonyos
whysqwhw6 小时前
鸿蒙视频编码
harmonyos
ajassi20006 小时前
开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
华为·开源·harmonyos
前端世界7 小时前
在鸿蒙应用中快速接入地图功能:从配置到实战案例全解析
华为·harmonyos
江拥羡橙9 小时前
【基础-判断】HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力
安全·华为·typescript·harmonyos