基本操作
from ascript.android import action
模拟 手指 操作
点击
模拟 手指点击屏幕
- 函数
action.click(x:int,y:int,dur:int = 20):
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 要点击的屏幕X坐标 |
y | int | 是 | 要点击的屏幕Y坐标 |
dur | float | 否 | 点击持续时间,默认20毫秒 |
- 示例
# 模拟手指点击屏幕坐标 (898,1916)
from ascript.android import action
action.click(898,1916)
# 模拟手指长按屏幕坐标 (898,1916) 按住两秒不放
from ascript.android import action
action.click(898,1916,2000)
滑动
模拟 手指滑动屏幕
- 函数
action.slide(x:int,y:int,x1:int,y1:int,dur:int=20)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 滑动起始点X坐标 |
y | int | 是 | 滑动起始点Y坐标 |
x1 | int | 是 | 滑动结束点X坐标 |
y1 | int | 是 | 滑动结束点Y坐标 |
dur | float | 否 | 滑动持续时间,默认20毫秒 |
interpolator | java Interpolator | 否 | 默认None,差速器. 可以实现各种加减速滑动效果 |
control_points=None | list或int | 否 | 贝塞尔控制点 |
- 示例
# 模拟手指滑动屏幕 从坐标(157,798) 滑动至坐标(946,834) ,耗时20毫秒
from ascript.android import action
action.slide(157,798,946,834)
# 模拟手指滑动屏幕 从坐标(157,798) 滑动至坐标(946,834) ,耗时3000毫秒
from ascript.android import action
action.slide(157,798,946,834,3000)
# 加速插值。动画开始时较慢,然后逐渐加速
from android.view.animation import AccelerateInterpolator
action.slide(644,739,625,2000,2000,AccelerateInterpolator())
# 减速插值。动画开始时较快,然后逐渐减速。
# from android.view.animation import DecelerateInterpolator
# action.slide(644,739,625,2000,2000,DecelerateInterpolator())
# 更多有趣差速器,见下文
# 模拟人手真实抖动
from ascript.android import action
from android.view.animation import DecelerateInterpolator
action.slide(157,798,946,834,3000,DecelerateInterpolator(),control_points=0)
# 随机生成100组贝塞尔控制点
# action.slide(157,798,946,834,3000,control_points=100)
# 自定义2组贝塞尔控制点
# action.slide(157,798,946,834,3000,control_points=[100,100,60,60])
关于差速器
我们可以借助android 原生差速器实现各种效果, 如 加速、减速、先加后减,等各种效果.
差速器部分,使用android.view.animation.Interpolato
这意味着我们可以直接导入android 的所有差速器类
LinearInterpolator
- 导入:
from android.view.animation import LinearInterpolator
- 效果: 线性插值。动画从开始到结束以恒定速度进行,没有加速或减速。
- 参数: 无。
- 构造函数:
LinearInterpolator()
- 用途: 简单、均匀的过渡,如匀速移动、渐变。
AccelerateInterpolator
- 导入:
from android.view.animation import AccelerateInterpolator
- 效果: 加速插值。动画开始时较慢,然后逐渐加速。
- 参数:
factor
(float): 控制加速度的指数。值越大,开始时越慢,加速越明显。默认值为1.0f
,对应 t² 的曲线。
- 构造函数:
AccelerateInterpolator()
(使用默认factor
1.0f)AccelerateInterpolator(float factor)
- 用途: 模拟物体启动、元素滑入屏幕。
DecelerateInterpolator
- 导入:
from android.view.animation import DecelerateInterpolator
- 效果: 减速插值。动画开始时较快,然后逐渐减速。
- 参数:
factor
(float): 控制减速度的指数。值越大,开始时越快,结束时减速越明显。默认值为1.0f
。
- 构造函数:
DecelerateInterpolator()
(使用默认factor
1.0f)DecelerateInterpolator(float factor)
- 用途: 模拟物体停止(如受摩擦力影响)、元素滑出屏幕。
AccelerateDecelerateInterpolator
- 导入:
from android.view.animation import AccelerateDecelerateInterpolator
- 效果: 先加速后减速插值。动画开始和结束时慢,中间速度最快。形成一个平滑的 "S" 形速度曲线(Ease-in, Ease-out)。
- 参数: 无。
- 构造函数:
AccelerateDecelerateInterpolator()
- 用途: 非常常用,用于创建自然、平滑的 UI 过渡效果,是最符合物理直觉的缓动之一。
OvershootInterpolator
- 导入:
from android.view.animation import OvershootInterpolator
- 效果: 超出目标插值。动画会超过其最终目标值一点,然后再回弹到最终值。
- 参数:
tension
(float): 控制超出量(张力)。值越大,超出的幅度越大。默认值为2.0f
。
- 构造函数:
OvershootInterpolator()
(使用默认tension
2.0f)OvershootInterpolator(float tension)
- 用途: 增加趣味性和弹性,模拟弹簧效果,例如一个窗口弹出时稍微放大再恢复。
AnticipateInterpolator
- 导入:
from android.view.animation import AnticipateInterpolator
- 效果: 预期插值。动画开始前会先向相反方向移动一点,然后再朝最终目标移动。
- 参数:
tension
(float): 控制“后退”的量(张力)。值越大,后退的幅度越大。默认值为2.0f
。
- 构造函数:
AnticipateInterpolator()
(使用默认tension
2.0f)AnticipateInterpolator(float tension)
- 用途: 模拟“蓄力”或“预备”动作,增加动画的戏剧性或强调开始的动作。
AnticipateOvershootInterpolator
- 导入:
from android.view.animation import AnticipateOvershootInterpolator
- 效果: 预期超出插值。结合了
AnticipateInterpolator
和OvershootInterpolator
的效果。动画先向后退,然后向前冲过目标值,最后回弹到目标值。 - 参数:
tension
(float): 同时影响后退和超出的基础张力。默认值为2.0f
。extraTension
(float): 额外的张力因子,仅作用于超出部分 (最终超出张力 =tension * extraTension
)。默认值为1.5f
。
- 构造函数:
AnticipateOvershootInterpolator()
(使用默认tension
2.0f,extraTension
1.5f)AnticipateOvershootInterpolator(float tension)
(使用指定tension
, 默认extraTension
1.5f)AnticipateOvershootInterpolator(float tension, float extraTension)
- 用途: 创建非常动态、富有弹性和趣味性的动画效果。
BounceInterpolator
- 导入:
from android.view.animation import BounceInterpolator
- 效果: 弹跳插值。动画在接近结束时会像球落地一样进行几次弹跳,幅度逐渐减小,最后停在目标值。
- 参数: 无。弹跳的物理模拟是内建的。
- 构造函数:
BounceInterpolator()
- 用途: 模拟物体掉落并弹跳的效果,或者给 UI 元素增加活泼、有趣的安顿方式。
关于贝塞尔控制点
关于贝塞尔曲线
所谓贝塞尔曲线即 直线外 一个控制点,则可让直线改变为一条曲线.
1次贝塞尔曲线 = 1组控制点
2次贝塞尔曲线 = 2组控制点
n次贝塞尔曲线 = n组控制点
control_points 参数
- control_points = 0 #模拟真实人手抖动
- control_points = 100 # 随机生成 100组控制点
- control_points = [100,100] # 一个控制点100,100,这个就是1次贝塞尔曲线,自己写控制点
- control_points = [100,100,50,50] # 2组控制点, 这就是2次贝塞尔曲线
输入
模拟 输入文本
- 函数
action.input(msg:str="",selector:Selector=None)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
msg | str | 是 | 输入的内容 |
selector | Selector | 否 | 控件检索规则 当Selector 为None时,您的输入框必须已经获取了焦点 |
- 示例
# 模拟在当前 ‘已获取焦点’的的文本框中输入‘你好 aslib!’
from ascript.android import action
action.input("你好 aslib!")
# 模拟在 控件检查器查到的 文本框中输入‘你好 aslib!’
from ascript.android import action
from ascript.android.node import Selector
selector = Selector().id("com.aojoy.airscript:id/search_bar_text")
action.input("你好 aslib!",selector)
触摸
模拟 手指 按下,移动,抬起
#class
action.Touch
按下
模拟 手指按下
action.Touch.down(x,y,dur:int=20)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 触摸X点坐标 |
y | int | 是 | 触摸Y点坐标 |
dur | float | 否 | 动作持续时间,默认20毫秒 |
移动
模拟 手指移动
action.Touch.move(x, y, dur: int = 20)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 触摸X点坐标 |
y | int | 是 | 触摸Y点坐标 |
dur | float | 否 | 动作持续时间,默认20毫秒 |
抬起
模拟 手指抬起
action.Touch.up(x, y, dur: int = 20)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 触摸X点坐标 |
y | int | 是 | 触摸Y点坐标 |
dur | float | 否 | 动作持续时间,默认20毫秒 |
# 一个完整的 触摸 操作
from ascript.android import action
# 从坐标(100,200)的位置按下
action.Touch.down(299,629)
# 按下的同时,移动到坐标(300,300)
action.Touch.move(780,645)
# 按下的同时,再次移动到坐标(400,350),移动用时 1000毫秒
action.Touch.move(445,1152,1000)
# 移动至坐标(450,400)位置 抬起
action.Touch.up(445,1152)
按键
模拟 模拟按键操作
#class
action.Key
Home键
模拟设备 Home按键
action.Key.home()
返回键
模拟设备 返回按键
action.Key.back()