js-apis-arkui-inspector.md 4.9 KB
Newer Older
H
huangdong57 已提交
1 2 3 4 5 6 7
# @ohos.arkui.inspector (布局回调)

提供注册组件布局和绘制完成回调通知的能力。

> **说明:**
>
> 从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8 9
>
> 从API version 10开始,可以通过使用[UIContext](./js-apis-arkui-UIContext.md#uicontext)中的[getUIInspector](./js-apis-arkui-UIContext.md#getuiinspector)方法获取当前UI上下文关联的[UIInspector](./js-apis-arkui-UIContext.md#uiinspector)对象。
H
huangdong57 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

## 导入模块

```js
import inspector from '@ohos.arkui.inspector'
```

## inspector.createComponentObserver

createComponentObserver(id: string): ComponentObserver

绑定指定组件,返回对应的监听句柄。

**系统能力:** SystemCapability.ArkUI.ArkUI.Full

**参数:** 

| 参数名 | 类型   | 必填 | 说明       |
| ------ | ------ | ---- | ---------- |
| id     | string | 是   | 指定组件id。 |

**返回值:** 

| 类型              | 说明                                             |
| ----------------- | ------------------------------------------------ |
|[ComponentObserver](#componentobserver)| 组件回调事件监听句柄,用于注册和取消注册监听回调。 |

**示例:** 

```js
40
let listener = inspector.createComponentObserver('COMPONENT_ID'); //监听id为COMPONENT_ID的组件回调事件
H
huangdong57 已提交
41 42 43 44 45 46 47 48 49 50
```

## ComponentObserver

组件布局绘制完成回调的句柄,包含了申请句柄时的首次查询结果。

### on

on(type: 'layout', callback: () => void): void

Y
yamila 已提交
51
通过句柄向对应的查询条件注册回调,当组件布局完成时会触发该回调。
H
huangdong57 已提交
52 53 54 55 56

**系统能力:** SystemCapability.ArkUI.ArkUI.Full

**参数:** 

57 58
| 参数名   | 类型   | 必填 | 说明|
| -------- | ------ | ---- | -------------------------------------|
H
huangdong57 已提交
59 60 61 62 63
| type     | string | 是   | 必须填写字符串'layout'或'draw'。<br>layout: 组件布局完成。<br>draw: 组件绘制完成。 |
| callback | void   | 是   | 监听layout或draw的回调。|

### off

64
off(type: 'layout', callback?: () => void): void
H
huangdong57 已提交
65

Y
yamila 已提交
66
通过句柄向对应的查询条件取消注册回调,当组件布局完成时不在触发指定的回调。
H
huangdong57 已提交
67 68 69 70 71

**系统能力:** SystemCapability.ArkUI.ArkUI.Full

**参数:** 

72 73
| 参数名   | 类型   | 必填 | 说明 |
| -------- | ------ | ---- | -------------------------------------------- |
Y
yamila 已提交
74
| type     | string | 是   | 必须填写字符串'layout'或'draw'。<br>layout: 组件布局完成。<br>draw: 组件绘制完成。 |
75
| callback | void   | 否   | 需要取消注册的回调,如果参数缺省则取消注册该句柄下所有的回调。|
H
huangdong57 已提交
76

Y
yamila 已提交
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
### on

on(type: 'draw', callback: () => void): void

通过句柄向对应的查询条件注册回调,当组件绘制完成时会触发该回调。

**系统能力:** SystemCapability.ArkUI.ArkUI.Full

**参数:** 

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| type     | string | 是   | 必须填写字符串'layout'或'draw'。<br>layout: 组件布局完成。<br>draw: 组件绘制完成。 |
| callback | void   | 是   | 监听layout或draw的回调。                                     |

### off

off(type: 'draw', callback?: () => void): void

通过句柄向对应的查询条件取消注册回调,当组件绘制完成时不在触发指定的回调。

**系统能力:** SystemCapability.ArkUI.ArkUI.Full

**参数:** 

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| type     | string | 是   | 必须填写字符串'layout'或'draw'。<br>layout: 组件布局完成。<br>draw: 组件绘制完成。 |
| callback | void   | 否   | 需要取消注册的回调,如果参数缺省则取消注册该句柄下所有的回调。 |

H
huangdong57 已提交
107 108
**示例:**

L
luoying_ace_admin 已提交
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
  ```ts
  import inspector from '@ohos.arkui.inspector'

  @Entry
  @Component
  struct ImageExample {
    build() {
      Column() {
        Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start }) {
          Row({ space: 5 }) {
            Image($r('app.media.app_icon'))
              .width(110)
              .height(110)
              .border({ width: 1 })
              .id('IMAGE_ID')
          }
H
huangdong57 已提交
125
        }
L
luoying_ace_admin 已提交
126 127
      }.height(320).width(360).padding({ right: 10, top: 10 })
    }
H
huangdong57 已提交
128

L
lixinnan 已提交
129
    listener:inspector.ComponentObserver = inspector.createComponentObserver('IMAGE_ID')
H
huangdong57 已提交
130

L
luoying_ace_admin 已提交
131
    aboutToAppear() {
L
lixinnan 已提交
132 133 134 135 136 137 138 139
      let onLayoutComplete:()=>void=():void=>{
          // do something here
      }
      let onDrawComplete:()=>void=():void=>{
          // do something here
      }
      let FuncLayout = onLayoutComplete // bind current js instance
      let FuncDraw = onDrawComplete // bind current js instance
140

L
luoying_ace_admin 已提交
141 142 143
      this.listener.on('layout', FuncLayout)
      this.listener.on('draw', FuncDraw)
    }
H
huangdong57 已提交
144
  }
L
luoying_ace_admin 已提交
145
  ```