【AutoJs】AutoJs实现手势模拟,点击,滑动操作 | 您所在的位置:网站首页 › 用autojs会被检测么 › 【AutoJs】AutoJs实现手势模拟,点击,滑动操作 |
autojs在android7以上系统支持了一些手势模拟操作,可以是基于控件也可以是基于指定屏幕坐标的,本文主要介绍基于坐标的几个手势模拟方法。 1. 坐标自适应在介绍手势模拟方法前先介绍一个可根据屏幕分辨率的变化,自适应调整坐标的方法: 假如我们设置点击坐标(300,2200),在2400 x 1080 像素的手机中可以正常生效,而当运行在1920 x 1080 像素的手机上时,会因为坐标超出屏幕范围不生效。 因此可以使用一个设定屏幕分辨率的方法setScreenMetrics(width, height)来告诉脚本基于怎样的屏幕分辨率去运行,例如 setScreenMetrics(1080,2400); click(300,2200);//点击该坐标当在1920 x 1080 像素的手机上运行时,将会自动根据预设屏幕分辨率和实际屏幕分辨率的比值来放缩屏幕 300 x 1080/1080 = 300 2200 x 1920/2400 = 1760 即实际将会点击坐标(300,1760) 2. 点击方法 2.1 短暂点击 click(x,y);x:值为number,要点击的屏幕横坐标,从左至右 y:值为number,要点击的屏幕纵坐标,从上至下 是最简单最常见的模拟点击方式,模拟点击坐标(x, y),并会返回是否点击成功。只有在点击执行完成后脚本才继续执行。 点击时长大约150毫秒,如果被其他事件中断(例如用户自行点击)会点击失败。 2.2 长点击 longClick(x, y);模拟长按坐标(x, y), 并返回是否成功。 只有在长按执行完成(大约600毫秒)时脚本才会继续执行。 长按过程中被其他事件中断(例如用户自行点击)会长按失败。 2.3 自定义时长点击 press(x, y, duration);x:值为number,要点击的屏幕横坐标,从左至右 y:值为number,要点击的屏幕纵坐标,从上至下 duration:值为number,点按的时长,单位毫秒 模拟点按坐标(x, y)指定的时长,并返回是否成功。只有按住操作执行完成时脚本才会继续执行。 如果按住时间过短,那么会被系统认为是点击;如果时长超过500毫秒,则认为是长按。 一般而言,只有按住过程中被其他事件中断才会操作失败。 3. 滑动方法 3.1 两点间滑动 swipe(x1, y1, x2, y2, duration);x1:滑动的起始坐标的x值 y1: 滑动的起始坐标的y值 x2:滑动的结束坐标的x值 y2:滑动的结束坐标的y值 duration:滑动时长,单位毫秒 模拟在指定时长从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。只有滑动操作执行完成时脚本才会继续执行。 一般而言,只有滑动过程中被其他事件中断才会滑动失败。 3.2 多点间滑动 gesture(duration, [x1, y1], [x2, y2], ...);显而易见的意思。在指定时长从坐标(x1,y1)滑到(x2,y2)滑到… 需要注意的是,duration设定的是单次两点滑动期间的时长间隔 例如gesture(1000, [0, 0], [500, 500], [500, 1000])为模拟一个从(0, 0)到(500, 500)到(500, 100)的手势操作,时长为2秒 3.3 多手势同时模拟基于滑动的手势可以实现更复杂的手势例如放大,捏合,旋转等操作,需要多个滑动手势同时运行,因此推荐下述方法: gestures([delay1, duration1, [x1, y1], [x2, y2], ...], [delay2, duration2, [x3, y3], [x4, y4], ...], ...)gestures()方法将多个手势(注意,只能是滑动手势)作为参数放在方括号中同时运行。 delay:该组滑动执行时单次滑动之间的间隔事件,单位毫秒,默认值0 duration:该组滑动执行时单次滑动的持续时长 [x1,y1],[x2,y2]…:该组滑动的点坐标 例如模拟手指的捏合 gestures([0, 500, [800, 300], [500, 1000]], [0, 500, [300, 1500], [500, 1000]]);需要注意的是,以上介绍的所有手势模拟方法都 不能同时运行 \color{Red}{不能同时运行} 不能同时运行,必须等待一个手势执行结束后才能执行下一个,若想实现如同时点击多点操作,则建议学习多线程操作。 |
CopyRight 2018-2019 实验室设备网 版权所有 |