Android中的多点触控仪器测试

时间:2014-03-11 00:37:30

标签: java android unit-testing multi-touch

嗨,我陷入了同样的境地。我正在使用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);
}

我对显示here的generateZoomGesture使用了相同的方法。测试类扩展了ActivityInstrumentationTestCase2。我使用assertTrue只是为了看看我的代码是否被覆盖。我将不得不改变断言声明。但这里的问题是测试不会进入else if(event.getPointerCount()== 2)阻止。你能帮我找出我错在哪里吗?

1 个答案:

答案 0 :(得分:0)

你需要尝试切换机箱,编写多点触控需要使用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());
        }
    }
}