鸿蒙App开发,史上最强组件父类Component!

一、为什么先介绍Component?

Componen是UI组件的基类,它定义了组件许多通用功能和属性,其他组件(Text、Image、Button、ListContainer等)都是继承自该类,类似安卓中的View。

根据OOP面向对象思想,其他组件都是Component的子类,自然就继承了这些功能和属性,无需重复介绍,也更方便没有接触过安卓开发的朋友理解。


二、Component有哪些新增特性?

注意:这些API是安卓系统没有的。

​1、 Content(显示内容)限制API

鸿蒙新增了控制组件内部内容显示的方法,如下:

setContentEnable(boolean enable)

该方法用于控制组件内部的内容是否可以显示出来。

为了让例子能否生效,必须使用能否包含内容的组件,这里使用Text,示例如下:

Text text = (Text) findComponentById(ResourceTable.Id_text);
text.setText("HarmonyOS");
// ContentEnable默认为true,设置为false之后,Text组件的内容就不能够显示
text.setContentEnable(false);

此外,鸿蒙还新增了控制内容区域的内容显示的起点位置方法,总共3个如下:

// 同时设置xy两个方向的偏移量
setContentPosition(float x, float y):
// 只设置X方向的偏移量
setContentPositionX(float x):
// 只设置Y方向的偏移量
setContentPositionY(float y):

以上3个方法只能用于“容器组件”,也就是ComponentContainer及其子类。

这里以DirectionalLayout组件举例,布局xml如下:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:id="$+id:dl"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">
    <Component
        ohos:id="$+id:component"
        ohos:height="150vp"
        ohos:width="150vp"
        ohos:background_element="$graphic:component_state"
        ohos:text_alignment="top"
        />
</DirectionalLayout>

DirectionalLayout容器组件中包含组件Component,默认不使用setContentPosition相关方法,Component会位于DirectionalLayout的左上角,并且两者间没有间距。

如果使用代码设置后,Component会相对DirectionalLayout在XY方向上偏移设置的距离,代码如下:

DirectionalLayout layout = (DirectionalLayout) findComponentById(ResourceTable.Id_dl);
layout.setContentPosition(100, 100);

该效果就不用了图片展示了,有兴趣可以使用上面的代码尝试,鸿蒙还新增了许多API,后续知识点会逐一介绍。

2、组件绑定于解绑监听

安卓的View没有直接提供该方法,而是需要先设置视图树观察者,监听该观察者才可以获取该状态回调。

鸿蒙直接为Component对象提供了该API,用起来更快捷方便。比如:可以方便获取Component绑定到Window之后的具体宽高值等数据,使用如下:

component.setBindStateChangedListener(new Component
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值