android motionevet.obtain 模拟向下,android – 如何让MotionEvent进行缩放?

我有一个仪器,我想用来测试我的应用程序,但我似乎无法得到捏缩放以正确模拟.这是我目前的代码.它的要点是:将手指1和手指2向下推,将它们彼此靠近移动,然后将它们两者释放.

private void performZoomTest(int numUpdates) {

long downTime = SystemClock.uptimeMillis();

long eventTime = SystemClock.uptimeMillis();

float x1 = 0;

float y1 = 0;

Display main = activity.getWindowManager().getDefaultDisplay();

float x2 = main.getWidth();

float y2 = main.getHeight();

float xstep = x2 / (2 * numUpdates);

float ystep = y2 / (2 * numUpdates);

int id1 = 0 << MotionEvent.ACTION_POINTER_ID_SHIFT;

int id2 = 1 << MotionEvent.ACTION_POINTER_ID_SHIFT;

MotionEvent event =

MotionEvent.obtain(downTime, eventTime,

MotionEvent.ACTION_DOWN + id1,

x1, y1, 0);

sendPointerSync(event);

event =

MotionEvent.obtain(downTime, eventTime,

MotionEvent.ACTION_DOWN + id2,

x2, y2, 0);

sendPointerSync(event);

waitForIdleSync();

for (int i = 0; i < numUpdates; i++) {

eventTime = SystemClock.uptimeMillis();

Log.i("",Integer.toString(i));

x1 += xstep;

y1 += ystep;

x2 -= xstep;

y2 -= ystep;

event =

MotionEvent.obtain(downTime, eventTime,

MotionEvent.ACTION_MOVE + id1,

x1, y1, 0);

Log.i("id1", Integer.toString(MotionEvent.ACTION_MOVE + id1));

sendPointerSync(event);

event =

MotionEvent.obtain(downTime, eventTime,

MotionEvent.ACTION_MOVE + id2,

x2, y2, 0);

Log.i("id1", Integer.toString(MotionEvent.ACTION_MOVE + id2));

sendPointerSync(event);

waitForIdleSync();

}

eventTime = SystemClock.uptimeMillis();

event =

MotionEvent.obtain(downTime, eventTime,

MotionEvent.ACTION_UP + id1,

x1, y1, 0);

sendPointerSync(event);

event =

MotionEvent.obtain(downTime, eventTime,

MotionEvent.ACTION_UP + id2,

x2, y2, 0);

sendPointerSync(event);

waitForIdleSync();

}

结果似乎是应用程序将两个事件视为不同,并且不将它们注册为单个事件.有没有更好的方法呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值