做一个帮你快速调试UI参数的Android插件,这原因我服了


从 入口代码中可以看出,我们要先选一个Process,也就是下面这个界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N10nofbZ-1631089219217)(https://user-gold-cdn.xitu.io/2018/4/14/162c4b744805ad02?imageView2/0/w/1280/h/960/ignore-error/1)]

#### Window选择

之后会在Background执行`LayoutInspectorAction.GetClientWindowsTask`,这个Task会获取当前活跃的ClientWindow(也就是Android中的Window),如果超过一个的话,会出现对话框让我们选择,这里就不贴图了,反正大家都用过。

#### Capture View

选择了Window之后就会在Background执行`LayoutInspectorCaptureTask`,这个Task会获取到需要显示的View Hierarchy,View Properties以及一张BufferedImage(选择Window的截图),这些信息全部以二进制的信息储存在.li文件中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SD0W7UqN-1631089219219)(https://user-gold-cdn.xitu.io/2018/4/14/162c4b7468522e27?imageView2/0/w/1280/h/960/ignore-error/1)]

#### 显示

然后Layout Inspector自定义了一个FileEditor以支持.li文件的显示,也就是我们能看到View Tree和Properties Table的主界面。具体显示细节可参考`LayoutInspectorContext`类

#### Android SDK中的响应

上面介绍了Layout Inspector在插件端的简单流程,它想Android端要了Window信息,View的信息,相关代码都在`HandleViewDebug`类,下面是这个类的一些结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nHzr6L3S-1631089219220)(https://user-gold-cdn.xitu.io/2018/4/14/162c4b7469b2a9b1?imageView2/0/w/1280/h/960/ignore-error/1)]

也就是说服务端发出了一些命令的包,那作为客户端的Android是在哪里作出响应的呢?经过我的代码查找,我在Android SDK中发现了一个`DdmHandleViewDebug`类和`ViewDebug`类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2CziDZx-1631089219222)(https://user-gold-cdn.xitu.io/2018/4/14/162c4b746cb98937?imageView2/0/w/1280/h/960/ignore-error/1)]

从两个类的structure中就可以看出,Android端是在`Vi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值