【AutoJs】AutoJs实现手势模拟,点击,滑动操作

autojs在android7以上系统支持了一些手势模拟操作,可以是基于控件也可以是基于指定屏幕坐标的,本文主要介绍基于坐标的几个手势模拟方法。

1. 坐标自适应

在介绍手势模拟方法前先介绍一个可根据屏幕分辨率的变化,自适应调整坐标的方法:

假如我们设置点击坐标(300,2200),在2400 x 1080 像素的手机中可以正常生效,而当运行在1920 x 1080 像素的手机上时,会因为坐标超出屏幕范围不生效。

因此可以使用一个设定屏幕分辨率的方法setScreenMetrics(width, height)来告诉脚本基于怎样的屏幕分辨率去运行,例如

setScreenMetrics(10802400);
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}{不能同时运行} 不能同时运行,必须等待一个手势执行结束后才能执行下一个,若想实现如同时点击多点操作,则建议学习多线程操作。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值