繁体   English   中英

Android中的多点触控测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM