Esp*_*pen 8 android multi-touch touch
所以我正在开发一个必须处理多点触控的应用程序.基本上我想要单点旋转(这没问题).用于滚动的多点触控.
我有基本的代码,但是当从单一触摸转换到多点触控和副verca时,我遇到了问题.基本上,由于多点触控(两个手指)的中间位置和单个手指的绝对位置处于一定距离,因此运动将摇晃.因此,如果我在屏幕上有两个手指,它们构成一个中间位置,然后抬起一根手指,这就像从中间位置到绝对单指位置的快速移动.这将是我不想要的运动.
这是我的代码:
@Override
public boolean onTouchEvent( MotionEvent event ) {
float xEvent[] = new float[ 2 ];
float yEvent[] = new float[ 2 ];
switch( event.getPointerCount() ) {
case 1:
xEvent[ 0 ] = event.getX( 0 );
yEvent[ 0 ] = event.getY( 0 );
switch( event.getAction() ) {
case MotionEvent.ACTION_DOWN:
camera.onTouchDown( xEvent[ 0 ], yEvent[ 0 ] );
return true;
case MotionEvent.ACTION_MOVE:
camera.onTouchRotate( xEvent[ 0 ], yEvent[ 0 ] );
return true;
default: return super.onTouchEvent( event );
}
case 2:
xEvent[ 0 ] = event.getX( 0 );
yEvent[ 0 ] = event.getY( 0 );
xEvent[ 1 ] = event.getX( 1 );
yEvent[ 1 ] = event.getY( 1 );
switch( event.getAction() ) {
case MotionEvent.ACTION_DOWN:
camera.onTouchDown( ( ( xEvent[ 0 ] + xEvent[ 1 ] ) / 2 ), ( ( yEvent[ 0 ] + yEvent[ 1 ] ) / 2 ) );
return true;
case MotionEvent.ACTION_MOVE:
camera.onTouchSlide( ( ( xEvent[ 0 ] + xEvent[ 1 ] ) / 2 ), ( ( yEvent[ 0 ] + yEvent[ 1 ] ) / 2 ) );
return true;
case MotionEvent.ACTION_POINTER_1_UP:
camera.onTouchDown( xEvent[ 1 ], yEvent[ 1 ] );
return true;
case MotionEvent.ACTION_POINTER_2_UP:
camera.onTouchDown( xEvent[ 0 ], yEvent[ 0 ] );
return true;
default: return super.onTouchEvent( event );
}
default: return false;
}
}
Run Code Online (Sandbox Code Playgroud)
相机的onTouchDown功能只设置触摸移动的第一个值.这就是为什么我还在向上运动中使用它来为来自多点触控的单点触控动作设置新的开始值.
我希望有人知道我的问题是什么,可以帮助我.
ada*_*amp 10
如果您还没有阅读它,请从这里开始,它涉及Android中多点触控的一些事项:http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
关于您发布的代码的一些事项:
ACTION_DOWN指针计数为2. ACTION_DOWN只发送给第一个指针下降.第一个触摸屏幕后的所有手指都会发送ACTION_POINTER_DOWN.MotionEvent#getActionMasked())比单独编写每个指针索引要容易得多.MotionEvent.如果您跟踪指针随时间的移动,请使用指针ID.| 归档时间: |
|
| 查看次数: |
5603 次 |
| 最近记录: |