Android手势操作识别监听类GestureDetector的使用
2014-11-11 15:40:50 By: shinyuu
使用触屏手机、对触屏事件的处理是比不可少的、Android自带的消息无非按下、抬起、移动这几种、我们只需要简单重载onTouch或者设置触摸侦听器setOnTouchListener即可进行处理、很多时候、为了提高我们的APP的用户体验、有时候我们需要识别用户的手势、Android提供了一个手势监听类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的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛