Android笔记——GestureDetector

本文主要介绍了Android中用于处理手势操作的GestureDetector类,包括其作用和使用流程。GestureDetector适用于处理长按、滑动等手势。使用时,需要创建GestureDetector实例,提供上下文和监听器,并重写onTouchEvent方法。同时,文中提到了SimpleOnGestureListener中的onDoubleTap和onSingleTapUp两个关键函数,分别对应双击和单击抬起事件。
摘要由CSDN通过智能技术生成

一、GestureDetector的作用

GestureDetector,顾名思义,是用来处理我们在屏幕上进行各种手势操作的类。当我们想对长按、滑动等手势进行相关处理的时候,GestureDetector就派上用场了。


二、GestureDetector的使用

1.GestureDetector的使用流程:

GestureDetector和一般的button事件处理相类似。就是首先创建一个GestureDetector类,然后需要包含它所在的context以及它的监听器Listener。创建GestureDetector类:GestureDetectormGestureDetector = new GestureDetector(Context context,GestureDetector.OnGestureListener listener)。这里只是其中一种方法。

创建类之后,一定要记得重写onTouchEvent方法,不然的话我们进行手势操作是不起作用的!

2.Listener中的函数(SimpleOnGestureListener中的):

(1)onDoubleTap:当双击之后进入该函数。

<span style="white-space:pre">		</span>@Override
<span style="white-space:pre">		</span>public boolean onDoubleTap(MotionEvent e) {
<span style="white-space:pre">			</span>// TODO Auto-generated method stub
<span style="white-space:pre">			</span>return super.onDoubleTap(e);
<span style="white-space:pre">		</span>}
(2)onDoubleTapEvent:这是处理onDoubleTap之前可能有up、down和move的event。所以在进入onDoubleTap之前会三次进入该函数。

		@Override
		public boolean onDoubleTapEvent(MotionEvent e) {
			// TODO Auto-generated method stub
			Log.i("onDoubleTapEvent", "onDoubleTapEvent");
			return super.onDoubleTapEvent(e);
		}
(3)onDown:按下之后就会进入该函数。

		@Override
		public boolean onDown(MotionEvent e) {
			// TODO Auto-generated method stub
			Log.i("onDown", "onDown");
			return super.onDown(e);
		}
(4)onFling:当执行滑动操作的时候进入该函数(也就是手指从一个点滑到另一个点停)。

		@Override
		public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
				float velocityY) {
			// TODO Auto-generated method stub
			Log.i("onFling", "onFling");
			
			return super.onFling(e1, e2, velocityX, velocityY);
		}
(5)onLongPress:当长按的时候进入该函数。

		@Override
		public void onLongPress(MotionEvent e) {
			// TODO Auto-generated method stub
			Log.i("onLongPress", "onLongPress");
			super.onLongPress(e);
		}
(6)onScroll:当手指在屏幕上滑动的时候就会进入该函数(也就是说手指在屏幕上一直滑来滑去的话,就会不断的进入该函数)。
		@Override
		public boolean onScroll(MotionEvent e1, MotionEvent e2,
				float distanceX, float distanceY) {
			// TODO Auto-generated method stub
			Log.i("onScroll", "onScroll");
			return super.onScroll(e1, e2, distanceX, distanceY);
		}
(7)onShowPress:按下之后如果没有发生其他动作则进入该函数(也就是说如果仅仅只是按下屏幕的话,就进入该函数。因为按下之后还有可能移动)

		@Override
		public void onShowPress(MotionEvent e) {
			// TODO Auto-generated method stub
			Log.i("onShowPress", "onSHOW");
			super.onShowPress(e);
		}
(8)onSingleTapConfirmed:按下之后如果判断不是logPress的话,则进入该函数。

		@Override
		public boolean onSingleTapConfirmed(MotionEvent e) {
			// TODO Auto-generated method stub
			Log.i("onSingleTapConfirmed", "true");
			return super.onSingleTapConfirmed(e);
		}

(9)onSingleTapUp:官方API解释为Notified when a tap occurs with the up MotionEvent that triggered it.

		@Override
		public boolean onSingleTapUp(MotionEvent e) {
			// TODO Auto-generated method stub
			Log.i("onSingleTapUp", "true");
			return super.onSingleTapUp(e);
		}














 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值