首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多点接触事件的麻烦

多点接触事件的麻烦
EN

Stack Overflow用户
提问于 2014-07-31 07:23:20
回答 1查看 97关注 0票数 0

我试图了解多点触摸事件是如何工作的,但我的代码并没有像我预期的那样运行。只有当我迅速地将三个或更多的手指放在屏幕上时,才能识别多次触摸:

代码语言:javascript
复制
@Override
public boolean onTouchEvent(MotionEvent event) {

    int x = (int) event.getX();
    int y = (int) event.getY();

    switch(event.getAction()){
    case MotionEvent.ACTION_DOWN:
        doSomeUnimportantStuff();
        return true;

    case MotionEvent.ACTION_POINTER_DOWN:
        for (int i = 0;i < event.getPointerCount()-1;i++) {
            Log.d("Multi-Touch", Float.toString(event.getX(i)));
            return true;
        }
    }
    return true;
}

为什么我放在屏幕上的第二个手指没有被识别,为什么我把手指放在屏幕上的速度会影响多次触摸是否被识别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-31 07:27:02

根据android的文档:

您应该始终使用方法getActionMasked(事件)(或者更好的是,可压缩版本MotionEventCompat.getActionMasked(事件))来检索MotionEvent的操作。

至于是否有单个或多个触摸事件,请使用以下代码片段,同样是从android文档中获取的。基本上,您可以检查是否有多个指针,如果有,那么显然屏幕上有一个以上的触摸。

代码语言:javascript
复制
if (event.getPointerCount() > 1) {
    //MULTI TOUCH EVENT IS TRIGGERED!
    // The coordinates of the current screen contact, relative to 
    // the responding View or Activity.  
    xPos = (int)MotionEventCompat.getX(event, index);
    yPos = (int)MotionEventCompat.getY(event, index);

} else {
    // Single touch event

    xPos = (int)MotionEventCompat.getX(event, index);
    yPos = (int)MotionEventCompat.getY(event, index);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25053014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档