• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.arkui.inspector (布局回调)
2
3提供注册组件布局和绘制完成回调通知的能力。
4
5> **说明:**
6>
7> 从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)对象。
10
11## 导入模块
12
13```ts
14import inspector from '@ohos.arkui.inspector'
15```
16
17## inspector.createComponentObserver
18
19createComponentObserver(id: string): ComponentObserver
20
21绑定指定组件,返回对应的监听句柄。
22
23**系统能力:** SystemCapability.ArkUI.ArkUI.Full
24
25**参数:**
26
27| 参数名 | 类型   | 必填 | 说明       |
28| ------ | ------ | ---- | ---------- |
29| id     | string | 是   | 指定组件id。 |
30
31**返回值:**
32
33| 类型              | 说明                                             |
34| ----------------- | ------------------------------------------------ |
35|[ComponentObserver](#componentobserver)| 组件回调事件监听句柄,用于注册和取消注册监听回调。 |
36
37**示例:**
38
39```ts
40let listener:inspector.ComponentObserver = inspector.createComponentObserver('COMPONENT_ID'); //监听id为COMPONENT_ID的组件回调事件
41```
42
43## ComponentObserver
44
45组件布局绘制完成回调的句柄,包含了申请句柄时的首次查询结果。
46
47### on
48
49on(type: 'layout', callback: () => void): void
50
51通过句柄向对应的查询条件注册回调,当组件布局完成时会触发该回调。
52
53**系统能力:** SystemCapability.ArkUI.ArkUI.Full
54
55**参数:**
56
57| 参数名   | 类型   | 必填 | 说明|
58| -------- | ------ | ---- | -------------------------------------|
59| type     | string | 是   | 必须填写字符串'layout'或'draw'。<br>layout: 组件布局完成。<br>draw: 组件绘制完成。 |
60| callback | void   | 是   | 监听layout或draw的回调。|
61
62### off
63
64off(type: 'layout', callback?: () => void): void
65
66通过句柄向对应的查询条件取消注册回调,当组件布局完成时不再触发指定的回调。
67
68**系统能力:** SystemCapability.ArkUI.ArkUI.Full
69
70**参数:**
71
72| 参数名   | 类型   | 必填 | 说明 |
73| -------- | ------ | ---- | -------------------------------------------- |
74| type     | string | 是   | 必须填写字符串'layout'或'draw'。<br>layout: 组件布局完成。<br>draw: 组件绘制完成。 |
75| callback | void   | 否   | 需要取消注册的回调,如果参数缺省则取消注册该句柄下所有的回调。|
76
77### on
78
79on(type: 'draw', callback: () => void): void
80
81通过句柄向对应的查询条件注册回调,当组件绘制完成时会触发该回调。
82
83**系统能力:** SystemCapability.ArkUI.ArkUI.Full
84
85**参数:**
86
87| 参数名   | 类型   | 必填 | 说明                                                         |
88| -------- | ------ | ---- | ------------------------------------------------------------ |
89| type     | string | 是   | 必须填写字符串'layout'或'draw'。<br>layout: 组件布局完成。<br>draw: 组件绘制完成。 |
90| callback | void   | 是   | 监听layout或draw的回调。                                     |
91
92### off
93
94off(type: 'draw', callback?: () => void): void
95
96通过句柄向对应的查询条件取消注册回调,当组件绘制完成时不再触发指定的回调。
97
98**系统能力:** SystemCapability.ArkUI.ArkUI.Full
99
100**参数:**
101
102| 参数名   | 类型   | 必填 | 说明                                                         |
103| -------- | ------ | ---- | ------------------------------------------------------------ |
104| type     | string | 是   | 必须填写字符串'layout'或'draw'。<br>layout: 组件布局完成。<br>draw: 组件绘制完成。 |
105| callback | void   | 否   | 需要取消注册的回调,如果参数缺省则取消注册该句柄下所有的回调。 |
106
107**示例:**
108
109  ```ts
110  import inspector from '@ohos.arkui.inspector'
111
112  @Entry
113  @Component
114  struct ImageExample {
115    build() {
116      Column() {
117        Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start }) {
118          Row({ space: 5 }) {
119            Image($r('app.media.app_icon'))
120              .width(110)
121              .height(110)
122              .border({ width: 1 })
123              .id('IMAGE_ID')
124          }
125        }
126      }.height(320).width(360).padding({ right: 10, top: 10 })
127    }
128
129    listener:inspector.ComponentObserver = inspector.createComponentObserver('IMAGE_ID')
130
131    aboutToAppear() {
132      let onLayoutComplete:()=>void=():void=>{
133          // do something here
134      }
135      let onDrawComplete:()=>void=():void=>{
136          // do something here
137      }
138      let offLayoutComplete:()=>void=():void=>{
139          // do something here
140      }
141      let offDrawComplete:()=>void=():void=>{
142          // do something here
143      }
144      let FuncLayout = onLayoutComplete // bind current js instance
145      let FuncDraw = onDrawComplete // bind current js instance
146      let OffFuncLayout = offLayoutComplete // bind current js instance
147      let OffFuncDraw = offDrawComplete // bind current js instance
148
149      this.listener.on('layout', FuncLayout)
150      this.listener.on('draw', FuncDraw)
151
152      // 通过句柄向对应的查询条件取消注册回调,由开发者自行决定在何时调用。
153      // this.listener.off('layout', OffFuncLayout)
154      // this.listener.off('draw', OffFuncDraw)
155    }
156  }
157  ```
158