描述:
touch滑动事件:翻阅图片 click点击事件:toast出图片名 现在的情况是: 1.滑动的时候不仅翻阅了图片,还toast出了图片名(同时相应了touch和click事件),不正常 2.点击的时候(toast出图片名),正常 问题 针对情况1,怎么在touch滑动的时候不响应点击事件?希望一起讨论下 |
|
#1 得分:0
回复于: 2013-04-13 13:59:17
不写click,写个onLongClick
|
|
#2 得分:0
回复于: 2013-04-13 14:35:43
LS的改成onLongClick 照样还是会有问题的 不是很好的解决方案啊 我对此也是比较困惑 也没有找到很好的方法 希望有大牛 帮忙解决分析下~
|
|
#3 得分:0
回复于: 2013-04-13 15:03:17
这么做试试,将touch事件响应的时候,down返回false,up返回true,依旧是使用longClick
|
|
#4 得分:0
回复于: 2013-04-14 08:27:45
down是这个吗? public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } up好像没有onUp函数 |
|
#5 得分:0
回复于: 2013-04-14 08:31:45
@Override public boolean onTouchEvent(MotionEvent event) { gestureDetector.onTouchEvent(event); switch (event.getAction()) { case MotionEvent.ACTION_DOWN:{ return false;} case MotionEvent.ACTION_MOVE:{ } case MotionEvent.ACTION_UP:{ return true;} default: break; } return super.onTouchEvent(event); } 这样写问题还是一样的出现了。 |
|
#6 得分:0
回复于: 2013-04-14 08:40:22
如果需要oncick,不能用longclick,有没有备选的解决方案? |
|
#7 得分:0
回复于: 2013-04-14 08:44:53
3楼应该是正解 你去百度搜一下 viewgroup 点击事件分发 看一下 差不多就了解了
|
|
#8 得分:0
回复于: 2013-04-14 15:51:23
谢谢,我认真阅读了下 比如这样的嵌套关系 1个java, 1个布局文件: ViewGroup(2个全屏LinearLayout(都有一个可toast按钮)) 我只想让LinearLayout响应touch手势。 --------- Activity将TouchEvent传递给最顶层的View(是不是按钮?) 当按钮不消费这个touch事件的时候,是怎么被轮到判断linearLayout的?(代码是循环执行的吗?) |
|
#9 得分:0
回复于: 2013-04-14 15:58:44
代码只能写一种 您看我描述的是否正确 ->touch事件先传递到按钮 diapatchTouchEvent(return false)->onInterceptTouchEvent(return false) ->touch事件传到linearLayout diapatchTouchEvent(return true)->onTouchEvent(return true)这样就是linearLayout来响应 写代码的时候diapatchTouchEvent和onInterceptTouchEvent是唯一函数,但是这里既要先return false,再return true 不知道如何处理这样的情况 |
|
#10 得分:0
回复于: 2013-04-14 16:19:23
http://www.cnblogs.com/kingcent/archive/2011/03/08/1977064.html
http://blog.csdn.net/shen332401890/article/details/8572732 主要看上面 那个 下面那个是我不成熟的记录学习,稍微看看就行。 |
|
#11 得分:0
回复于: 2013-04-14 18:39:09
3Q
这个机制我在你的第一个回复中已经认真阅读了 又看了下你的文章,写得很详细 有点困惑在于dispatchTouchEvent是不需要重写的吗? 另外是不是有几个子view就有多少个onInterceptTouchEvent呢?如果不是这样,怎么一个设置false,另一个设置true呢? |
|
#12 得分:0
回复于: 2013-04-16 11:07:30
滑动事件重写onFling,不用onTouch
点击重写onClick |
|
#13 得分:0
回复于: 2013-04-16 11:18:12
并且加一个全局变量比如boolean isFling;
在onFling方法中isFling=true; 在onClick方法中先判断isFling=false,然后执行click事件,记得在onClick方法中最后设置isFling=false |
|
#14 得分:0
回复于: 2013-04-16 12:22:38
也遇到这个问题 帮顶了
|
|
#15 得分:0
回复于: 2013-04-16 13:08:51
帮顶,留用!
|
|
#16 得分:0
回复于: 2013-04-20 13:59:39
楼主,我觉得可以这么做,只用一个onTouch,不要onClick
| ||
|
#17 得分:0
回复于: 2013-05-08 10:56:43
LS挺有想法的,不妨一试
|
|
#18 得分:0
回复于: 2013-05-09 18:28:18
和16楼想法一致,
在down事件中记录点下的x,y坐标, 在up事件中记录弹起的x,y坐标, UP事件的x,y坐标减去down事件中的坐标,根据自己的需求设定偏移值的范围,不同的范围内执行不同的翻页还是toast! |
|
#19 得分:0
回复于: 2013-05-10 13:28:36
貌似很多时候点击都有可能是move过 |
|
#20 得分:0
回复于: 2013-05-10 14:37:30
你可以看看18楼的做法, |