-
Notifications
You must be signed in to change notification settings - Fork 62
ui analyze
Carlyle-Lee edited this page Jul 7, 2020
·
4 revisions
Lens 提供了选中界面中的视图元素的基础能力。
-
操作方式:
打开视图拾取开关。点击界面中的视图,即可选中相应的视图。 -
兄弟组件:支持高亮展示选中视图的兄弟组件。
-
相对距离: 勾选后可选中第二个视图,并展示两个视图之间的相对距离;
-
视图信息简要: 展示控件的精简视图信息。点击可跳转
当前组件
页面。 -
导航按钮:
- Next: todo fix : 新视图拾取实现方案,有待进一步优化拾取算法。
- Parent: 选中当前视图的Parent。
- Row: 直接选中当前视图,在最近的列表视图中的直接子视图。
-
View Debug: 支持为当前选中的视图添加debug 信息;当选中视图时,debug 信息将展示在控件合适的位置。
-
Debug Info:在视图中或者视图附近显示调试文本信息。
-
Debug Action: 在界面上展示动态添加的调试按钮,文本,点击后,可执行预设的调试功能。
- Debug Info
LensUtil.setViewDebugInfo(listView, "this is a ListView");
- DebugAction a. 实现debug 接口, 并为lens 设置实现类。
ViewInfoConfig.getInstance().setViewInfoHandler(ViewInfoHandle.class);
b. 在接口方法 onViewDebug 中定制调试能力。
@Override public void onViewDebug(final ViewDebugActions actions, final View view) { if (view instanceof MYTextView) { // actions.setViewDebugInfo(view, "this is the view debug info"); actions.add("reload", new Runnable() { @Override public void run() { ((MYTextView) view).setText(UUID.randomUUID().toString()); } }); actions.add("clear", new Runnable() { @Override public void run() { ((MYTextView) view).setText(""); actions.exitViewDebug(); } }); } }
-
视图拾取按钮下方展示的是当前Activity 信息。点击进入界面分析
页面。
- 视图层级信息: View Hierarchy, 支持点击展开或者收起。
- Activity 对象引用信息:点击进入对象属性面板。
- 查看最深视图信息:展示当前界面中最深视图层级的路径。
- 页面层级信息:展示当前页面中子页面的嵌套信息。(可点击展开或者收起)
- 页面内视图分析;
展示当前选中的视图相关信息
- 视图详情:展示视图的一些基本情况。
- 点击事件:如果视图上有点击事件,将展示点击事件对象信息。
- DebugObject:展示抓取的和视图相关的对象信息。点击进入
属性面板
- 添加DebugObject 方法:
- Lens 自动添加;
- app 成自行添加;(两个接口任意实现其一)
- 添加DebugObject 方法:
public class ViewInfoHandle implements IViewInfoHandle {
@Override
public Object[] onViewSelect(View selectedView, Object var1, int var2, int var3) {
// 自行实现并确定返回内容,可直接返回Object. 或者返回ObjectDescription
return new ObjectDescription[]{new ObjectDescription(selectedView, "onViewSelect")};
}
@Override
public Object[] onViewAnalyse(Object view, Object value) {
// 自行实现并确定返回内容,可直接返回Object. 或者返回ObjectDescription
return new ObjectDescription[]{new ObjectDescription(value, "Your Message")};
}