在Android中处理3个手指点按

时间:2013-09-19 10:09:11

标签: android touchscreen

我正在使用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;
}
}

0 个答案:

没有答案