照网上写的一段Touch事件,正常接收到ACTION_DOWN,但ACTION_UP偶尔才能接收到 private float m_MotionX;
private OnTouchListener onTouch = new OnTouchListener() { @Override
public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
m_MotionX = event.getX();
Log.d(TAG, "MotionEvent.ACTION_DOWN:" + m_MotionX + "");
return true;
case MotionEvent.ACTION_UP:
if (event.getX() > m_MotionX) {
next();
} else if (event.getX() < m_MotionX) {
previous();
}
Log.d(TAG,
"MotionEvent.ACTION_UP:" + m_MotionX + " "
+ event.getX());
return false;
default:
break;
}
return false;
// true: 1.告诉Android,MotionEvent对象已被使用,不能再提供给其他方法。
// 2.还告诉Android,继续将此触摸序列的触摸事件(move,up)发送到此方法。
// false:1.告诉Android,onTouch()方法未使用该事件,所以Android寻找要调用的下一个方法。
// 2.告诉Android。不再将此触摸序列的触摸事件(move,up)发送到此方法。
}
};10-17 23:40:16.747: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:188.91553
10-17 23:40:17.948: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:192.83923
10-17 23:40:18.359: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:542.049
10-17 23:40:18.709: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:485.1553
10-17 23:40:19.390: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:263.46594
10-17 23:40:19.660: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:255.61853
10-17 23:40:20.031: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:431.5313
10-17 23:40:21.022: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:262.15802
10-17 23:40:21.252: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:87.55313
10-17 23:40:21.722: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:238.6158
10-17 23:40:21.883: D/NewsDetailActivity(4965): MotionEvent.ACTION_UP:238.6158 565.32153
10-17 23:40:21.943: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:489.079
10-17 23:40:22.253: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:438.07083
10-17 23:40:23.444: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:193.49318
上面是日志我划了那么多下,就只有一次接收到这是为什么,正常应该怎么写?谢谢
private OnTouchListener onTouch = new OnTouchListener() { @Override
public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
m_MotionX = event.getX();
Log.d(TAG, "MotionEvent.ACTION_DOWN:" + m_MotionX + "");
return true;
case MotionEvent.ACTION_UP:
if (event.getX() > m_MotionX) {
next();
} else if (event.getX() < m_MotionX) {
previous();
}
Log.d(TAG,
"MotionEvent.ACTION_UP:" + m_MotionX + " "
+ event.getX());
return false;
default:
break;
}
return false;
// true: 1.告诉Android,MotionEvent对象已被使用,不能再提供给其他方法。
// 2.还告诉Android,继续将此触摸序列的触摸事件(move,up)发送到此方法。
// false:1.告诉Android,onTouch()方法未使用该事件,所以Android寻找要调用的下一个方法。
// 2.告诉Android。不再将此触摸序列的触摸事件(move,up)发送到此方法。
}
};10-17 23:40:16.747: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:188.91553
10-17 23:40:17.948: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:192.83923
10-17 23:40:18.359: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:542.049
10-17 23:40:18.709: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:485.1553
10-17 23:40:19.390: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:263.46594
10-17 23:40:19.660: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:255.61853
10-17 23:40:20.031: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:431.5313
10-17 23:40:21.022: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:262.15802
10-17 23:40:21.252: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:87.55313
10-17 23:40:21.722: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:238.6158
10-17 23:40:21.883: D/NewsDetailActivity(4965): MotionEvent.ACTION_UP:238.6158 565.32153
10-17 23:40:21.943: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:489.079
10-17 23:40:22.253: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:438.07083
10-17 23:40:23.444: D/NewsDetailActivity(4965): MotionEvent.ACTION_DOWN:193.49318
上面是日志我划了那么多下,就只有一次接收到这是为什么,正常应该怎么写?谢谢
解决方案 »
- 请问如何通过代码让spinner展开列表?
- monkeyrunner是否可以独立拿出来
- android第一个HelloWorld运行没有结果,费解1天前来讨教
- android bluez org.bluez.Adapter.GetProperties获取不了 UUIDS的问题
- RadioButton监听运行时,模拟器就提示has stop unexpectedly
- WCF service 如何通过TCP协议 与Android交互
- Andriod 2.2 HTC G7 如何删去手机自带软件
- 2.1中联系人邮箱的问题
- 如何绑定热点
- 关于ArcGIS for Android加载自己发布的地图的问题
- pull解析xml
- 请教:Android下怎样对数据进行位运算(位与、位或等)?
。
return false;
你返回false,这样下次就不会传递下来了 上层的父ViewGroup会自己消费掉或者继续向上传
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
m_MotionX = event.getX();
Log.d(TAG, "MotionEvent.ACTION_DOWN:" + m_MotionX + "");
return true;
case MotionEvent.ACTION_CANCEL:
Log.d(TAG, "MotionEvent.ACTION_CANCEL");
return true;
case MotionEvent.ACTION_UP:
if (event.getX() > m_MotionX) {
next();
} else if (event.getX() < m_MotionX) {
previous();
}
Log.d(TAG,
"MotionEvent.ACTION_UP:" + m_MotionX + " "
+ event.getX());
return true;
default:
break;
}
return true;
// true: 1.告诉Android,MotionEvent对象已被使用,不能再提供给其他方法。
// 2.还告诉Android,继续将此触摸序列的触摸事件(move,up)发送到此方法。
// false:1.告诉Android,onTouch()方法未使用该事件,所以Android寻找要调用的下一个方法。
// 2.告诉Android。不再将此触摸序列的触摸事件(move,up)发送到此方法。
}
我改为这样了,日志是出现了ACTION_CANCEL
如下:
10-18 11:10:53.878: D/NewsDetailActivity(14969): MotionEvent.ACTION_DOWN:196.76294
10-18 11:10:54.138: D/NewsDetailActivity(14969): MotionEvent.ACTION_UP:196.76294 649.0539
10-18 11:10:55.650: D/NewsDetailActivity(14969): MotionEvent.ACTION_DOWN:153.60217
10-18 11:10:55.770: D/NewsDetailActivity(14969): MotionEvent.ACTION_CANCEL
10-18 11:10:56.921: D/NewsDetailActivity(14969): MotionEvent.ACTION_DOWN:112.40327
10-18 11:10:57.022: D/NewsDetailActivity(14969): MotionEvent.ACTION_CANCEL
10-18 11:10:57.923: D/NewsDetailActivity(14969): MotionEvent.ACTION_DOWN:133.98364
10-18 11:10:58.033: D/NewsDetailActivity(14969): MotionEvent.ACTION_CANCEL
10-18 11:10:58.733: D/NewsDetailActivity(14969): MotionEvent.ACTION_DOWN:127.44414
10-18 11:10:58.994: D/NewsDetailActivity(14969): MotionEvent.ACTION_UP:127.44414 644.7193只要有Cancel的地方就没有了ACTION——UP
那是怎么回事?要怎么改呢?谢谢
我Touch的控件TextView外面有一个ScrollView
这时当我不是进行水平划动的时候,这个Move的事件应该是给SCROLLVIEW给拦截了
所以我的TextView就接收不到ACTION_UP事件,而是得到一个ACTION_CANCEL事件那要怎么处理,才能实现对TextView的Touch事件呢?谢谢
ScrollView用来上下拖动显示内容
然后我又要给我的TextViewi添加一个左右划动时显示上一条或下一条新闻的功能所以现在出现上面的问题
要如何解决呢?谢谢
在dispatchTouchEvent里面将事件传给GestureDetector,在onFling实现左右滑动的判定