是这样的,我正在研究一个android的多点触屏问题。我知道android在2.0版本以上的sdk中已经提供了对多点触屏的处理函数,这个函数是这样的:
event.getPointerCount(); //获取触控点的数量,比如2则可能是两个手指同时按压屏幕
event.getX(nID); //获取第nID个触控点的x位置
event.getY(nID); //获取第nID个点触控的y位置
函数很好,我发现的bug在于:
当二指触屏时,特别是二指移动引发mov事件时,Event.getX和event.getY取得的x,y坐标会出错。
如二指触屏的坐标为(x1,y1)和(x2,y2),实际上坐标值为(50,400)和(280,80)。而用event.getX(0),event.getY(0),event.getX(1),event.getY(1)函数获得的坐标却为(50,80)和(280,400)或者(50,200)和(280,200)。
也就是多点触屏的函数获得的x,y坐标的值不准确,这是android的大bug。
大家遇到过这种问题吗?
------解决方案--------------------
木有研究过啊
------解决方案--------------------
帮顶下,表要下沉了
------解决方案--------------------
给WebView弄了一个多点触控缩放的方法,从网上找的,挺好的呀
------解决方案--------------------
- Java code
@Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction() & MotionEvent.ACTION_MASK; int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT; int pointerId = event.getPointerId(pointerIndex); switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: touched[pointerId] = true; x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_CANCEL: touched[pointerId] = false; x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); break; case MotionEvent.ACTION_MOVE: int pointerCount = event.getPointerCount(); for (int i = 0; i < pointerCount; i++) { pointerIndex = i; pointerId = event.getPointerId(pointerIndex); x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); } break; } updateTextView(); return true; }
------解决方案--------------------
这绝对不是bug是楼主木有用好。我目前木有做过这个,但是很多应用都有这功能,貌似木有bug。你不能直接这样获取坐标,当然需要做一些判定哦。
------解决方案--------------------
没有发现,LZ贴下具体代码,具体分析下是怎么造成的
------解决方案--------------------
可以看看我的博客,我专门写了两点触摸和多点触控的,http://blog.sina.com.cn/s/blog_8d955f8c0100y2xv.html
------解决方案--------------------
虽然没研究过这个。。不过最好不要认为google错了。。而且还错了那么久没改。。所以应该是你错了。。。
------解决方案--------------------
哈哈,我刚工作时候好像也像楼主一样经常会发现很多前人未发现的系统bug.
结果:100%都是我自己犯的低级错误......
------解决方案--------------------
:-),不懂帮顶
------解决方案--------------------
我也顶下 别沉了
------解决方案--------------------
没做过帮顶
------解决方案--------------------
:-),不懂帮顶
------解决方案--------------------
看看LINUX下的文档
------解决方案--------------------
多点触控也是智能机的一大优点啊,不会错的吧。
------解决方案--------------------