HarmonyOS 自定义UI之Component属性值获取 原创 精华
作者:刘清华
当系统自带的Component不能满足我们项目UI需求时,就需要自定义Component,这时就不可避免的会使用自定义属性,鸿蒙自定义属性不需要预先定义<自定义属性/>
标签。而是直接在布局中使用这个自定义属性,在使用的时候只需要在根布局上加上下面这个命名空间
自定义属性
鸿蒙自定义属性值通过attrSet.getAttr(name).get().getXXX()
API获得,能够读取一些基本数据类型的数据,但是有一些值无法直接读取比如ResourceId、StringArray等,导致使用非常不方便,因此写了这个属性值获取工具类 ,方便开发者获取各种不同类型的属性值。
自定义的Component: 包含高度尺寸、字体大小、字体、字符串数组、布局id、背景图片属性。
获取自定义属性值
自定义的CustomComponent
打印输出如下:
ResourceId属性值获取
鸿蒙attrSet.getAttr(name).get()
并没有对应的API用于获取布局id,需要先获取String值:$layout:16777227,分号的后面代表布局id,我们只要截取分号后的字符串就行。
StringArray属性值获取
鸿蒙attrSet.getAttr(name).get()
也没有对应的API用于获取StringArray字符串数组,需要先获取String值:$strarray:hour,分号的后面代表资源名称,我们只要截取这个再拼接Strarray_+hour
,
再通过类加载器得到ResourceTable资源类,里面有所有资源id。再反射得到Strarray_+hour
资源id,有了资源id就可以得到字符串数组了。
鸿蒙自定义字体获取
首先字体文件放在resources/rawfile/xxx.ttf
路径下,再通过new Font.Builder(file).build()
构建字体文件,就可以用于Text
控件了。
Element属性值获取
鸿蒙的Element根据不同的资源实例化成不同的子对象,颜色值被实例化成ShapeElement,图片资源被实例化成PixelMapElement。
更多原创内容请关注:开鸿 HarmonyOS 学院
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
小蒙这名字很亲切呀,支持一波。