Android手势操作识别监听类GestureDetector的使用
2014-11-11 15:40:50  By: dwtedx

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

手势监听类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

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


猜你喜欢的

快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+