使用Android Studio中的HierarchyViewer 及UI Automator Viewer定位当前UI界面的代码位置

有时候调试别人写的代码或者是android源码的时候,不知道当前界面的代码位置,那我们如何定位呢?以下,以SnapdragonCamera为例,定位拍照按钮的点击实现。首先我们将设备连接电脑,打开camera如下图:

使用Android Studio中的HierarchyViewer 及UI Automator Viewer定位当前UI界面的代码位置_第1张图片

打开Android Studio,打开ADM

使用Android Studio中的HierarchyViewer 及UI Automator Viewer定位当前UI界面的代码位置_第2张图片

打开之后,选择HierarchyViewer 选项

使用Android Studio中的HierarchyViewer 及UI Automator Viewer定位当前UI界面的代码位置_第3张图片

由上图可知,当前界面所在的Activity为CameraLauncher,打开AndroidManifest,找到CameraLauncher的定义

   
            
                

                
                
            
        

原来CameraLauncher只是CameraActivity的别名,真正的主页面是CameraActivity这个类,我们打开这个类,找到它的布局文件。


    
    
    
    
    
    
    
    

布局文件非常简单,看来camera的UI做了层层封装,通过此方法无法快速定位拍照按钮的位置,我们来看第二种方式:用UI Automator Viewer 来定位,同样打开ADM,选择DDMS,保持相机处于预览界面,操作如下

使用Android Studio中的HierarchyViewer 及UI Automator Viewer定位当前UI界面的代码位置_第4张图片

通过Ctrl+H全局搜索,查询id/shutter_button 如下,找到拍照按钮的布局代码

使用Android Studio中的HierarchyViewer 及UI Automator Viewer定位当前UI界面的代码位置_第5张图片

查看布局文件,按钮的布局为

 

是一个自定义的Button控件,其点击事件实现在 ShutterButton内部

  @Override
    public boolean performClick() {
        boolean result = super.performClick();
        if (mListener != null && getVisibility() == View.VISIBLE) {
            mListener.onShutterButtonClick();
        }
        return result;
    }

全局搜索shutter_button我们可以得知,当前布局被封装在CaptureUI 、 VideoUI 、PhotoUI中。

你可能感兴趣的:(Android,Studio)