|
最近看到cpfeng0124 的关于二次开发之自动生成控件定位符,心里感概真是相当棒的思路,但是可能由于是
公司的项目所以就点到为止并没有深入去解释其他一些功能。
这两天抽空研究了下吧,将部分的功能也一一的进行了研究完善。
uiautomatorviewer的原理我就不在这里说明里,首先说一下右键单击弹出菜单。我们要动手脚的地方是
- UiAutomatorView 是用来显示出截图后的界面的,
- mScreenshotCanvas.addMouseListener(new MouseAdapter() {
- @SuppressWarnings("unused")
- @Override
- public void mouseUp(MouseEvent e) {
- if (mModel != null) {
- mModel.toggleExploreMode();
- redrawScreenshot();
- }
- }
- }
复制代码
我们找到这个鼠标监听事件,可以看到readrawScreenshot()这函数的从字面上就能明白它的作用就是将你鼠
标点击的区域绘制的红色,那么我就从这里入手了,修改代码如下:
- mScreenshotCanvas.addMouseListener(new MouseAdapter() {
- @SuppressWarnings("unused")
- @Override
- public void mouseUp(MouseEvent e) {
- if (mModel != null) {
- mModel.toggleExploreMode();
- redrawScreenshot();
- }
- //如果为鼠标右键点击那么就弹出右键菜单
- if (e.button==3){
- Menu menu = new Menu(mScreenshotCanvas);
- mScreenshotCanvas.setMenu(menu);
- MenuItem item = new MenuItem(menu, SWT.PUSH);
- item.setText("控件点击");
- item.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- //获取选择的矩形区域
- Rectangle rect = mModel.getCurrentDrawingRect();
- objectClick(rect);
- };
- });
- }
- }
- }
复制代码
以上的代码就是实现右键弹出菜单,按钮叫控件点击,接着实现该按钮的点击事件,获取到所选择控件的矩
形区域,进行点击操作。
那下来我们来看看到底要如何实现点击的操作呢,实际也很点击,通过adb shell input 就可以了。
public void objectClick(Rectangle rectangle){
String adbStr = "adb shell input tap "+(rectangle.x+rectangle.width/2)+" " +(rectangle.y+rectangle.height/2);
execCmd(adbStr);
}
置于execCmd做什么操作就不用多说了,直接java调用cmd运行就可以了。
再就是一个脚本录制的功能,实际上这东西也不麻烦。只要你模范com.android.uiautomator.actions中的类
写一个
上面有些代码我都写死了。因为这也是仓促完成,另外本人真是新手,所有代码写的烂求轻点拍。
上面主要的功能就是点击录制按钮时,初始化就写入内容,点击结束时,将main方法补上。其他写文件就是在
右键时进行控件点击等时同时进行写文件操作就可以了。
最后在Uiautomatorviewer类中实例化该类
//加上按钮
toolBarManager.add(new RecordAction(this));
|
|