1、问题记录及解决方案
1.1 资源(Icon&i18n)问题
控件:只有一个JS文件,不会将任何资源型文件(图片、字体、默认文字等)打包到SO中。因此,当我们开发控件时,需要将需要使用到的资源,提前申请,放入资源仓库,然后等官方集成到系统中。
注意:资源都需要集成得到系统的room中,因此该步骤需要提前准备。
图片资源存放位置:
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向外暴露接口,组件使用者无法拦截数据的变化;
- 如果使用到数字,需要定义为常量;
未完,待续...