android手势识别总结

网络上面有不少关于这方面的介绍:

http://wayfarer.javaeye.com/blog/460284

http://goro.javaeye.com/blog/402163

http://www.williamhua.com/2009/04/23/android-touchscreen-gesture-recogniton/

上面的介绍还是挺详细的,总结一下:

onGestureListener得和onTouchListener配合使用,因为只有onTouchListener才是实际的监听到用户的 触摸,他把他所有监听到的用户触摸通知"手势识别"类对象,手势识别类对象处理后触发对应的函数,例如onFling, onLongPress等等。

这里总结我这两天遇到的问题和这些问题的解决方法

1. 快速tap屏幕后,手势识别给出三个事件: down, press, longpress ,这明显是不合理的

这个问题有两个解决办法。

a> 修改下面的代码,return true

这个方法同样也可以解决一般触摸屏事件的冲突问题,例如click和LongPress,在处理这个事件后,需要允许后继事件。

@Override
public boolean onDown(MotionEvent e) {
  Log.d("Gesture" , " onDown " + " x:" + e.getX() + " y:" + e.getY());
  return false ;
}

b> 设置当前的view

    this
.setLongClickable(true
);

 

2.长按后滑动无效

GestureDetector默认是打开LongPress通知的,但是有个问题,长按后,手不离开屏幕且滑动,这个时候发现没有滑动事件。

而在monolith的HomeScreen中,需要的正是长按之后的滑动,长按不需要。

这个问题的解决办法是设置手势识别对象,禁止产生长按事件

mGestureDetector.setIsLongpressEnabled(false
);

当然,没有禁用长按事件,滑动事件还是有效的,只是要确保触屏后马上滑动,不要等系统产生了长按。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值