我正在使用OnTouchListener为ex捕获多点触控事件。一个3指点击,我能够检测到最多2个手指。即event.getPointerCount()
最多返回2。
与onTouchEvent()
相同。有没有其他API来处理这个?
我在我的测试设备上启用了3个手指点击检测。
getPointerCount()适用于Android 4.1.2的摩托罗拉Droid,但不适用于安卓4.0.3的HTC One V.
This是我到目前为止所做的:
package com.example.toucheventsample;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.VideoView;
public class TouchEventActivity extends Activity implements OnTouchListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
VideoView videoView = (VideoView) findViewById(R.id.video);
videoView.setOnTouchListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.touch_event, menu);
return true;
}
public boolean handleTouchEvent(MotionEvent event) {
boolean handled = true;
int action = event.getAction();
int count = event.getPointerCount();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_UP:
if (3 == count) {
// handle 3 finger tap
}
break;
}
return handled;
}
@Override
public boolean onTouch(View view, MotionEvent event) {
int count = event.getPointerCount();
handleTouchEvent(event);
return true;
}
}