是这样的 我在一个view 里面放一条线例如(y=100) 当我手指从屏幕上划过这条线时(在线上那一瞬间) 我希望触发一个事件 。 就好比一个古筝 上面有很多铉 手指划过会响,而且只响一声。 当手指速度快时 我在view 的 ontouchEvent 里面收到的坐标都是一些不连续的坐标 例如 98.88 、 104.100、105.22.........一些散点..(当然 ontouch 事件也一样) 这样子,划过就不一定能触发y=100 了(当然设置了一个范围 也在不同的速度里可能得不到y=100 而且有时候会有重复的值落到这个范围里面)。真不知道该咋滴,希望大家指点一下.....thxandroid触屏坐标
y0<100<y1 || y0>100>y1 || y1 == 100
这个也尝试过,但是如果从其他控件点下去 再移动到该view 上 好像触发不了 ontouch 事件,不知道为啥(我已经返回true ),也就是手指从别处划过那条线不会响,单独去点那条线就会响....
mGestureDetector = new GestureDetector(mContext.getApplicationContext(),
new DialpadGestureDetector(), null, false);
private class DialpadGestureDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if ((e1.getY()<100 && e2.getY()>100) || (e1.getY()>100 && e2.getY<100)) {
//ok,手指划过,当然这个if也可能不是这么写,楼主稍微调试一下,应该没问题
}
return true
}
}
//重写ViewGroup这个方法
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
mGestureDetector.onTouchEvent(ev);
return false;
}
嗯,首先谢谢你的推荐,学习了一下,你介绍的这个方法 onFling() 是要在限定的时间内划过一小段距离down-------up 才触发 onfling() 实时性不够,还有当用户手指迟迟未离开触摸屏的话,过了那段限定时间,就不会再触发onfling()了。
嗯,首先谢谢你的推荐,学习了一下,你介绍的这个方法 onFling() 是要在限定的时间内划过一小段距离down-------up 才触发 onfling() 实时性不够,还有当用户手指迟迟未离开触摸屏的话,过了那段限定时间,就不会再触发onfling()了。
不是吧?这个没有限定时间,只是有个速度值velocityY,这个值你可以不用管,那么无论怎么划,划多久都没关系。
10-29 22:55:30.322: I/------------------------(20050): 267.13834----543.20355
10-29 22:55:35.682: I/------------------------(20050): 226.06522----311.57813
10-29 22:55:36.192: I/------------------------(20050): 241.55182----304.84482
10-29 22:55:36.652: I/------------------------(20050): 224.04523----304.84482
10-29 22:55:37.077: I/------------------------(20050): 236.8385----301.47818
10-29 22:55:37.497: I/------------------------(20050): 238.85849----300.1315
10-29 22:55:37.917: I/------------------------(20050): 242.22516----306.8648
10-29 22:55:38.397: I/------------------------(20050): 236.16519----313.5981
10-29 22:55:38.872: I/------------------------(20050): 215.29196----315.6181
10-29 22:55:39.362: I/------------------------(20050): 184.31879----279.9118