android 手势监听

手势监听要用到OnGestureListener接口和GestureDetector,同时要配合OnTouchListener一同使用,下面是具体步骤:

1、写一个类,实现OnGestureListener接口,实现以下方法:

@Override
	public boolean onDown(MotionEvent e) {
		// TODO 触摸屏按下时立刻触发
		return false;
	}

	@Override
	public void onShowPress(MotionEvent e) {
		// TODO 短按,触摸屏按下后片刻后抬起,会触发这个手势,如果迅速抬起则不会;强调的是没有松开或者拖动的状态,由一个ACTION_DOWN触发
		
	}

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		// TODO 抬起,手指离开触摸屏时触发(长按、滚动、滑动时,不会触发这个手势)
		return false;
	}

	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
			float distanceY) {
		// TODO 用户按下触摸屏,并拖动,由1个 ACTION_DOWN, 多个ACTION_MOVE触发
		return false;
	}

	@Override
	public void onLongPress(MotionEvent e) {
		// TODO 长按,触摸屏按下后既不抬起也不移动,由多个 ACTION_DOWN触发
		
	}

	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		// 滑动,触摸屏按下后快速移动并抬起,会先触发滚动手势,跟着触发一个滑动手势
        // 参数解释:
        // e1:第1个ACTION_DOWN MotionEvent
        // e2:最后一个ACTION_MOVE MotionEvent
        // velocityX:X轴上的移动速度,像素/秒
        // velocityY:Y轴上的移动速度,像素/秒
		return false;
	}



2、在控件上注册OnTouchListener监听器,在onTouch方法中调用GestureDetector的onTouchEvent(event);方法:

	private GestureDetector gd = new GestureDetector(this, new MyOnGestureListener());
	lv_music.setOnTouchListener(new OnTouchListener() {
				
				@Override
				public boolean onTouch(View v, MotionEvent event) {
					return gd.onTouchEvent(event);
				}
			});
	lv_music.setLongClickable(true);


注意,这里要将控件的长按事件设置为true,只有这样,view才能够处理不同于Tap(轻触)的hold(即ACTION_MOVE,或者多个ACTION_DOWN),我们同样可以通过layout定义中的android:longClickable来做到这一点。否则onFling()事件将不会被捕捉到。


至此结束。

相关帖子:

http://www.oschina.net/question/12_1515

http://www.cnblogs.com/a284628487/p/3299773.html

http://www.cnblogs.com/sw926/p/3208158.html

http://blog.csdn.net/tsdl2009/article/details/5810922这个比较复杂了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值