大佬教程收集整理的这篇文章主要介绍了android – 错误的指针计数onInterceptTouchEvent,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@Override public Boolean onInterceptTouchEvent(MotionEvent ev) { if(ev.getPointerCount() > 1) { return false; } return true; }
但是无论屏幕上有多少点,getPointerCount()总是返回’1′.当我覆盖onTouchEvent时,我得到了正确的数字,但是当我这样做时,一个错误阻止了寻呼机完全工作(http://code.google.com/p/android/issues/detail?id=18990),当你从多点触控中抬起你的第一根手指时抛出一个app杀死异常:java.lang.IllegalArgumentexception :pointerIndex超出范围
我还能怎么做呢?
编辑:
指针计数问题仍然存在,但我能够解决在onTouchEvent中抛出的异常.
当我得到例外时,我正在这样做:
if(ev.getPointerCount() == 1) { return super.onTouchEvent(ev); } return false;
问题在于,当您将第一根手指从多点触控中抬起时,ViewPager的onTouchEvent最终会处理ACTION_UP事件,而不会先处理ACTION_DOWN.所以我提出了这个修复程序,它可以避免异常并在你放下第二根手指时结束ViewPager的移动:
private Boolean moving = false; @Override public Boolean onTouchEvent (MotionEvent ev) { int action = ev.getAction(); if(action == MotionEvent.ACTION_DOWN) { moving = true; } if(ev.getPointerCount() == 1) { if(moving) { return super.onTouchEvent(ev); } if(action == MotionEvent.ACTION_Up) { moving = false; } } else if(ev.getPointerCount() > 1 && moving) { ev.setAction(MotionEvent.ACTION_Up); moving = false; return super.onTouchEvent(ev); } return false; }
@Override public Boolean onInterceptTouchEvent(MotionEvent ev) { if (ev.getPointerCount() > 1){ ev.setAction(MotionEvent.ACTION_CANCEL); } return super.onInterceptTouchEvent(ev); }
getPointerCount()对我来说没问题.使用上面的代码,ViewPager也会处理ACTION_DOWN步骤,并且它中的错误永远不会发生.
以上是大佬教程为你收集整理的android – 错误的指针计数onInterceptTouchEvent全部内容,希望文章能够帮你解决android – 错误的指针计数onInterceptTouchEvent所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。