首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多点触控- PointerIndex超出范围

多点触控- PointerIndex超出范围
EN

Stack Overflow用户
提问于 2013-12-18 20:39:42
回答 1查看 262关注 0票数 0

当我在应用程序中添加多点触摸功能时,我试图修复代码中出现的一个问题。问题似乎来自于ACTION_POINTER_DOWN:

代码语言:javascript
复制
private float oldDist = 0;
backCard.setOnTouchListener(new OnTouchListener() {
@Override
        public boolean onTouch(View v, MotionEvent me) {

            switch(me.getAction()){
            case MotionEvent.ACTION_DOWN:
                    firstX = (int) me.getX();
            case MotionEvent.ACTION_POINTER_DOWN:
                if(me.getPointerCount() >= 2){
                    oldDist = getSpacing(me);
                    System.out.println(oldDist);
                }                       
                break;
            case MotionEvent.ACTION_MOVE:
                    float newDist = getSpacing(me);
                    if(newDist - oldDist > 200 && oldDist != 0){
                       System.out.println("Enabled");
                    }
                break;
            case MotionEvent.ACTION_UP:         
            case MotionEvent.ACTION_POINTER_UP:
                break;
            }
            return true;

        }
 private float getSpacing(MotionEvent me){
            float difx = me.getX(0) - me.getX(1);
            float dify = me.getY(0) - me.getY(1);
            float spacing = (float) Math.sqrt(difx*difx + dify*dify);
            return spacing;
        }
 });

当我在ACTION_POINTER_DOWN中不使用ACTION_POINTER_DOWN()条件使用它时,就会出现超出范围的错误。但是如果我使用这个条件,日志就不会显示我在代码中打印的任何内容。(当然,我用了两个手指!: ),所以这种情况永远不是真的,即使几个手指同时触摸屏幕。

我怎么才能解决呢?谢谢。

我的设备是GS3。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-18 20:47:42

使用me.getActionMasked()而不是me.getAction()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20667931

复制
相关文章

相似问题

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