欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android手势操作识别监听类GestureDetector的使用

程序员文章站 2022-03-01 14:54:14
...

使用触屏手机、对触屏事件的处理是比不可少的、Android自带的消息无非按下、抬起、移动这几种、我们只需要简单重载onTouch或者设置触摸侦听器setOnTouchListener即可进行处理、很多时候、为了提高我们的APP的用户体验、有时候我们需要识别用户的手势、Android提供了一个手势监听类GestureDetector、GestureDetector使用很方便、提供了单击、双击、长按等操作的处理

Android手势操作识别监听类GestureDetector的使用

实现OnTouchListener和OnGestureListener


class MainActivity extends Activity implements OnTouchListener,
		OnGestureListener {


onCreate方法

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	myLayout = (LinearLayout) findViewById(R.id.test_layout);
	// 为布局绑定监听
	myLayout.setOnTouchListener(this);
}


手势滑动时别调用onFling方法

@Override
public boolean onFling(MotionEvent e1, 
		MotionEvent e2, float velocityX,
		float velocityY) {
	//X轴的坐标位移大于FLING_MIN_DISTANCE
	//且移动速度大于FLING_MIN_VELOCITY个像素/秒
	if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE) {
		// 向左滑动
		Toast.makeText(this, "向左滑动", TIME_OUT).show();
	} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE) {
		// 向右滑动
		Toast.makeText(this, "向右滑动", TIME_OUT).show();
	}
	return false;
}


关于OnGestureListener更多的手势动作做出、在例子里面对这些方法也有说明

按下(onDown):刚刚手指接触到触摸屏的那一刹那、就是触的那一下

抛掷(onFling):手指在触摸屏上迅速移动、并松开的动作

长按(onLongPress):手指按在持续一段时间、并且没有松开

滚动(onScroll):手指在触摸屏上滑动

按住(onShowPress):手指按在触摸屏上、它的时间范围在按下起效、在长按之前

抬起(onSingleTapUp):手指离开触摸屏的那一刹那


下面说明一下这些方法的执行顺序吧

任何手势动作都会先执行一次按下(onDown)动作

长按(onLongPress):动作前一定会执行一次按住(onShowPress)动作

按住(onShowPress):动作和按下(onDown)动作之后都会执行一次抬起(onSingleTapUp)动作

长按(onLongPress):滚动(onScroll)和抛掷(onFling)动作之后都不会执行抬起(onSingleTapUp)动作

最后给大家贴上源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1eQgVtYU 密码: 134a