• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 页面布局检查器ArkUI Inspector使用指导
2
3DevEco Studio内置ArkUI Inspector工具,开发者可以使用ArkUI Inspector,在DevEco Studio上查看应用在真机上的UI显示效果。利用ArkUI Inspector工具,开发者可以快速定位布局问题或其他UI相关问题,同时也可以观察和了解不同组件之间的布局关系和属性,学习如何通过布局属性来控制组件的显示方式。
4
5## 使用约束
6
7已通过USB连接设备并在设备上打开需要调试的设备。
8
9仅在应用为debug编译模式时使用。
10
11仅支持OpenHarmony API 9及以上版本的Stage工程。
12
13## 场景示例
14
15示例代码使用Grid组件来实现网格布局,在子组件Text组件的外层嵌套了3层Stack容器。
16
17```ts
18@Entry
19@Component
20struct ArkUIInspectorExample {
21  @State children: Number[] = Array.from(Array(900), (_: undefined, k: number) => k);
22
23  build() {
24    Scroll() {
25      Grid() {
26        ForEach(this.children, (item: Number) => {
27          GridItem() {
28            Stack() {
29              Stack() {
30                Stack() {
31                  Text(item.toString()).border({ width: 2, color: Color.Green })
32                }
33              }
34            }
35          }
36        }, (item: Number) => item.toString())
37      }
38      .columnsTemplate('1fr 1fr 1fr 1fr')
39      .columnsGap(0)
40      .rowsGap(0)
41      .size({ width: "100%", height: "100%" })
42    }
43  }
44}
45```
46
47## 如何使用页面布局检查器
48
49以DevEco Studio 4.0.0.400版本为例,在DevEco Studio菜单栏上单击***\*View\**** > ***\*Tool Windows\**** >***\*ArkUI Inspector\****,或者在DevEco Studio底部工具栏单击![img](./figures/profiler_inspector_button.jpg)
50
51打开ArkUI Inspector工具,如下图所示:
52
53![img](./figures/profiler_inspector.jpg)
54
551. 进程选择栏,选择已经在设备上打开的应用进程。点击右侧![img](./figures/profiler_refresh.jpg)“Refresh”按钮以刷新当前页面快照,请注意,设备需要处于亮屏状态并且应用需要处于前台运行。
56
572. 页面组件树区,用于查看组件嵌套状态,当前显示为Text组件。
58
593. 页面快照区,点击Text组件后,页面组件列表跳转至选中的Text组件。点击右下角![img](./figures/profiler_pan_screen.jpg)“Pan Screen”按钮以拖移屏幕;点击![img](./figures/profiler_plus.jpg) 、![img](./figures/profiler_minus.jpg) 按钮来缩放页面;点击![img](./figures/profiler_zoom.jpg)“Zoom to Fit Screen”按钮使页面居中并适应屏幕大小。
60
614. 组件详情区,展示当前选中Text组件的属性信息,包括组件的坐标、布局信息(Spacing)、尺寸信息(Size)、边框信息(Border)、背景信息(Background)、蒙版信息(Effect)、所有其他属性(All Attributes)。如需精准查找单个属性,可通过页面上方搜索栏进行搜索。
62
63## 问题分析
64
65从页面布局检查器中可以清晰看出,Text组件外部有3层冗余的Stack容器,属于嵌套过多场景。
66
67![img](./figures/profiler_inspector_analysis.jpg)
68
69## 代码优化
70
71针对在页面布局检查器中发现的冗余Stack容器问题,在应用代码中删除多余的Stack容器。
72
73```ts
74@Entry
75@Component
76struct ArkUIInspectorExample {
77  @State children: Number[] = Array.from(Array(900), (_: undefined, k: number) => k);
78
79  build() {
80    Scroll() {
81      Grid() {
82        ForEach(this.children, (item: Number) => {
83          GridItem() {
84            Text(item.toString()).border({ width: 2, color: Color.Green })
85          }
86        }, (item: Number) => item.toString())
87      }
88      .columnsTemplate('1fr 1fr 1fr 1fr')
89      .columnsGap(0)
90      .rowsGap(0)
91      .size({ width: "100%", height: "100%" })
92    }
93  }
94}
95```
96
97## 优化结果
98
99布局优化后,使用页面布局检查器可以看到页面上的冗余项已经去除。经过测试,页面滑动时刷新一帧的平均时间比优化前减少1ms。
100
101![img](./figures/profiler_inspector_result.jpg)
102