描述:
touch滑动事件:翻阅图片
click点击事件:toast出图片名现在的情况是:
1.滑动的时候不仅翻阅了图片,还toast出了图片名(同时相应了touch和click事件),不正常
2.点击的时候(toast出图片名),正常问题
针对情况1,怎么在touch滑动的时候不响应点击事件?希望一起讨论下
touch滑动事件:翻阅图片
click点击事件:toast出图片名现在的情况是:
1.滑动的时候不仅翻阅了图片,还toast出了图片名(同时相应了touch和click事件),不正常
2.点击的时候(toast出图片名),正常问题
针对情况1,怎么在touch滑动的时候不响应点击事件?希望一起讨论下
解决方案 »
- android可以用LINUX的SO库文件吗?
- Gps找不到provider怎么解决
- 主线程给工作线程发消息,工作线程收不到消息,求解
- 界面布局问题
- android平台用OpenGL ES绘制图像的移动
- 求Android SDK 2.2和其配套的ADT...(windows)
- 泪奔求解
- Andorid中的日志都要定义一个TAG常量,那这个常量能不能改为变量自动赋值呢?
- 弱弱问句android手机,自己的本地资料存在CONTACTS2数据库哪里?
- 求助!一个对齐的问题!
- 关于云储存或者百度云的基础问题, 用java/android 实现上传文件到云储存(比如百度云)
- cocos2d-android在创建CCGLSurfaceView的时候报找不到类异常
down是这个吗?
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}up好像没有onUp函数
@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);
}这样写问题还是一样的出现了。
如果需要oncick,不能用longclick,有没有备选的解决方案?
谢谢,我认真阅读了下
比如这样的嵌套关系
1个java,
1个布局文件:
ViewGroup(2个全屏LinearLayout(都有一个可toast按钮))
我只想让LinearLayout响应touch手势。
---------
Activity将TouchEvent传递给最顶层的View(是不是按钮?)
当按钮不消费这个touch事件的时候,是怎么被轮到判断linearLayout的?(代码是循环执行的吗?)
->touch事件先传递到按钮
diapatchTouchEvent(return false)->onInterceptTouchEvent(return false)
->touch事件传到linearLayout
diapatchTouchEvent(return true)->onTouchEvent(return true)这样就是linearLayout来响应
写代码的时候diapatchTouchEvent和onInterceptTouchEvent是唯一函数,但是这里既要先return false,再return true 不知道如何处理这样的情况
http://blog.csdn.net/shen332401890/article/details/8572732主要看上面 那个 下面那个是我不成熟的记录学习,稍微看看就行。
又看了下你的文章,写得很详细有点困惑在于dispatchTouchEvent是不需要重写的吗?
另外是不是有几个子view就有多少个onInterceptTouchEvent呢?如果不是这样,怎么一个设置false,另一个设置true呢?
点击重写onClick
在onFling方法中isFling=true;
在onClick方法中先判断isFling=false,然后执行click事件,记得在onClick方法中最后设置isFling=false
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:{
//记录按下的点的X坐标
startX = event.getRawX();
break;
}
case MotionEvent.ACTION_UP:
//记录抬起的点的X坐标, 若两次相等,触发了点击事件,否则是滑动事件
float LastX = event.getRawX();
if(startX == LastX){
Toast.makeText(getApplication(), "点击了", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplication(), "滑动了", Toast.LENGTH_SHORT).show();
}
break;
case MotionEvent.ACTION_MOVE:{
break;
} }
return false;
}
在down事件中记录点下的x,y坐标,
在up事件中记录弹起的x,y坐标,
UP事件的x,y坐标减去down事件中的坐标,根据自己的需求设定偏移值的范围,不同的范围内执行不同的翻页还是toast!
貌似很多时候点击都有可能是move过
貌似很多时候点击都有可能是move过你可以看看18楼的做法,