我需要模拟多点触摸事件(缩放,平移等),以用于Android应用程序的仪器测试。一种方法是手动生成相应的模拟真实输入的MotionEvent序列,然后逐个分派它们。在我这样做之前,有没有一些很好的API可以做这样的模拟?我想很多人在过去都遇到过这个问题。我正在研究Robotium Solo,但它只为单指针提供触摸/拖动功能。
如果没有这样的API,解决这个问题的最好方法是什么?我正在考虑写一个函数,为每个参与的指针接受一对点(开始,结束)和持续时间,但这会将手势限制为线性指针运动。
public void twoFingerTouchEvent(
Point from1, Point to1, int duration1,
Point from2, Point to2, int duration2) {
if (from1.equals(to1) && from2.equals(to2)) {
// two pointer tap
// DISPATCH_DOWN
// DISPATCH_POINTER_DOWN
// WAIT min(duration1, duration2)
// DISPATCH_POINTER_UP
// WAIT abs(duration1 - duration2)
// DISPATCH_UP
}
else if (from1.equals(to1) || from2.equals(to2)) {
// one of two pointers dragged after tap
// DISPATCH_DOWN
// DISPATCH_POINTER_DOWN
// DISPATCH_MOVE for moving pointer every 3-5 pixels, account for duration
// DISPATCH_POINTER_UP
// DISPATCH_UP
}
else {
// two pointer drag
// DISPATCH_DOWN
// DISPATCH_POINTER_DOWN
// DISPATCH_MOVE for both pointers in alternating order every 3-5 pixels
// DISPATCH_POINTER_UP
// DISPATCH_MOVE for pointer with longer duration
// DISPATCH_UP
}
}发布于 2013-05-19 01:14:41
你应该使用MotionEvent#obtain -它可以用来创建一个包含多个指针的MotionEvent。你并不局限于指针的线性运动--你可以传递一组点,然后向下执行一个动作,然后x次动作移动,最后向上动作。
https://stackoverflow.com/questions/16619714
复制相似问题