Skip to content

ui analyze

Carlyle-Lee edited this page Jul 7, 2020 · 4 revisions

页面分析

视图拾取

Lens 提供了选中界面中的视图元素的基础能力。
img

  • 操作方式:
    打开视图拾取开关。点击界面中的视图,即可选中相应的视图。

  • 兄弟组件:支持高亮展示选中视图的兄弟组件。

  • 相对距离: 勾选后可选中第二个视图,并展示两个视图之间的相对距离;

  • 视图信息简要: 展示控件的精简视图信息。点击可跳转当前组件页面。

  • 导航按钮:

    • 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

视图拾取按钮下方展示的是当前Activity 信息。点击进入界面分析页面。
img

  • 视图层级信息: View Hierarchy, 支持点击展开或者收起。
  • Activity 对象引用信息:点击进入对象属性面板。
  • 查看最深视图信息:展示当前界面中最深视图层级的路径。
  • 页面层级信息:展示当前页面中子页面的嵌套信息。(可点击展开或者收起
  • 页面内视图分析;
当前组件

展示当前选中的视图相关信息
img

  • 视图详情:展示视图的一些基本情况。
  • 点击事件:如果视图上有点击事件,将展示点击事件对象信息。
  • DebugObject:展示抓取的和视图相关的对象信息。点击进入属性面板
    • 添加DebugObject 方法:
      • Lens 自动添加;
      • app 成自行添加;(两个接口任意实现其一
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")};
    }
Clone this wiki locally