[英]Multi-touch instrumentation test in android
嗨,我陷入了同样的境地。 我正在使用OpenGL ES 2.0开发应用程序,需要测试代码的多点触控部分。 以下是我的onTouchEvent。 如果pointerCount为1,那么我正在旋转,并且如果用户用两根手指使用捏合动作,则将模型放大。
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
touchedX = event.getX();
touchedY = event.getY();
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
if (event.getPointerCount() == 1) {
activityRenderer.xAngle += (touchedX - event.getX()) / 2f;
activityRenderer.yAngle += (touchedY - event.getY()) / 2f;
touchedX = event.getX();
touchedY = event.getY();
} else if (event.getPointerCount() == 2) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
float newDistance = FloatMath.sqrt(x * x + y * y);
if (newDistance > oldDistance)
activityRenderer.zoom += 0.05;
else
activityRenderer.zoom -= 0.05;
oldDistance = newDistance;
}
}
return true;
}
下面是测试用例:
public void testZoomIn() {
mActivity = getActivity();
mActivity.startActivity(mActivity.getIntent());
Log.w("INSTRUMENTATION", (getInstrumentation() == null)?"yes":"no");
generateZoomGesture(getInstrumentation(), 1000, true, new Point(1, 2),
new Point(20, 45), new Point(3, 4), new Point(25, 55), 2000);
assertTrue(true);
}
我对generateZoomGesture使用了与此处所示相同的方法。 测试类扩展了ActivityInstrumentationTestCase2。 我使用assertTrue只是为了查看我的代码是否被覆盖。 我将不得不更改assert语句。 但是这里的问题是测试没有进入else if(event.getPointerCount()== 2)块内。 您能帮我找出我要去哪里吗?
您需要尝试切换大小写,编写多点触摸需要使用MotionEvent.ACTION_MASK,但是您不需要。 ps。 我是android新手,希望这个解释是正确的。
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
Log.d(TAG, "down");
case MotionEvent.ACTION_POINTER_DOWN:
Log.d(TAG, "pointer down");
case MotionEvent.ACTION_MOVE:
int pointerCount=e.getPointerCount();
Log.d(TAG, "move");
if(event.getPointerCount() == 2){
Log.d(TAG, "c =" + event.getPointerCount());
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.