最近在学习手势操作的时候看到了这篇文章 Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动的效果
博客地址 :http://blog.csdn.net/xiaanming/article/details/20934541
里面讲的真心不错,对我帮助很大。
这篇博客的主要思想是:
1.从左往右滑动屏幕时,如果滑动距离超过屏幕宽度的一半,就finish,否则不finish,并且滑回左侧。
2.通过对左右滑动距离和上下滑动的距离的判断来确定处理哪个事件。如果左右距离大于mTouchSlop,而且上下滑动距离小于mTouchSlop,就判定为左右滑动销毁事件。
其他情况下,处理ListView等的滑动,点击等事件。
在此基础上,我修改了一些代码,最终实现 向左向右滑动销毁(finish)Activity,并且添加了一个VelocityTrack,使得当从左往右或者从右往左滑动的速率达到一定的值时,即使移动距离没有达到屏幕宽度的一半,也可以finishActivity.
下面是修改的代码:
case MotionEvent.ACTION_UP: if (isSilding) { final VelocityTracker velocityTracker = mVelocityTracker; velocityTracker.computeCurrentVelocity(1000); int velocityX = (int) velocityTracker.getXVelocity();//设置units的值为1000,意思为一秒时间内运动了多少个像素 if (velocityX > SNAP_VELOCITY) { //速率超过600,正数为从左往右,负数从右往左 scrollRight(); } else if (velocityX < -SNAP_VELOCITY) { scrollLeft(); } else { scrollToDestination(); } //