Android滑动手势侦测方法介绍
http://developer.51cto.com/art/201001/181289.htm
- Android滑动手势在触摸屏电脑中是一个最为基本的操作。在这里我们会通过各种代码的解读来分析Android操作系统是如何侦测到不同的滑动手势。
- class?MyGestureDetector?extends?SimpleOnGestureListener?{? ?@Override? ?
- public?boolean?onFling(MotionEvent?e1,?MotionEvent?e2,?
float?velocityX,?float?velocityY)?{? ?}? - private?static?final?int?SWIPE_MIN_DISTANCE?=?120;? ?private?static?final?int?SWIPE_MAX_OFF_PATH?=?250;? ?
- private?static?final?int?
SWIPE_THRESHOLD_VELOCITY?=?200;?? - if(e1.getX()?-?e2.getX()?>?SWIPE_MIN_DISTANCE?&&?Math.abs
(velocityX)?>?SWIPE_THRESHOLD_VELOCITY)?{? ?viewFlipper.setInAnimation(slideLeftIn);? ? - viewFlipper.setOutAnimation(slideLeftOut);? ?viewFlipper.showNext();? ?
- }?else?if?(e2.getX()?-?e1.getX()?>?SWIPE_MIN_DISTANCE?&&?
Math.abs(velocityX)?>?SWIPE_THRESHOLD_VELOCITY)?{? ?viewFlipper.setInAnimation(slideRightIn);? ? - viewFlipper.setOutAnimation(slideRightOut);? ?viewFlipper.showPrevious();? ?
- }? ?if(e1.getX()?-?e2.getX()?>?SWIPE_MIN_DISTANCE?&&?
Math.abs(velocityX)?>?SWIPE_THRESHOLD_VELOCITY)?{ ? - viewFlipper.setInAnimation(slideLeftIn); ?viewFlipper.setOutAnimation(slideLeftOut); ?
- viewFlipper.showNext(); ?}?else?if?(e2.getX()?-?e1.getX()?>?SWIPE_MIN_DISTANCE?&&?
Math.abs(velocityX)?>?SWIPE_THRESHOLD_VELOCITY)?{ ? - viewFlipper.setInAnimation(slideRightIn); ?viewFlipper.setOutAnimation(slideRightOut); ?
- viewFlipper.showPrevious(); ?}?
- viewFlipper?=?(ViewFlipper)findViewById(R.id.flipper);? ?
- slideLeftIn?=?AnimationUtils.loadAnimation
(this,?R.anim.slide_left_in);? ?slideLeftOut?=?AnimationUtils.loadAnimation
(this,?R.anim.slide_left_out);? ? - slideRightIn?=?AnimationUtils.loadAnimation
(this,?R.anim.slide_right_in);? ?slideRightOut?=?AnimationUtils.loadAnimation
(this,?R.anim.slide_right_out);?? - <?set?xmlns:android="http://schemas.
android.com/apk/res/android">? ?<?translate?android:fromXDelta="100%p"?
android:toXDelta="0"?android:duration="800"/>? ? - <?/set>?
- @Override? ?public?boolean?onTouchEvent(MotionEvent?event)?{? ?
- if?(gestureDetector.onTouchEvent(event))? ?return?true;? ?
- else? ?return?false;? ?
- }?
在Android手机操作系统中支持各种滑动手势的操作。我们在这里为大家介绍的方法主要就是针对这些手势如何能在Android平台中侦测出来。下面就让我们大家一起来看看Android滑动手势具体的识别方法吧。
Android Activity跳转相关操作技巧分享Android创建sdcard详细图解Android系统信息查看方法详解Android数据库相关代码解读Android拍照实现方式概述?
Android SDK提供了一个listener类来侦测各种不同的手势:
SimpleOnGestureListener. 你只需要实现自己所关心的手势就可以了.
Swipe在android里面是叫Fling
首先创建自己的一个手势detector类:
?
?
一个Android滑动手势有几个特征, 比如是在x或者y轴上近乎直线的划动, 中途路径的偏差不能太大, 而且划动需要一定的速度, 所以我们定义几个定量:
?
?
然后在onFling方法中, 判断是不是一个合理的swipe动作:
?
?
这里的viewFlipper是含有多个view的一个container, 可以很方便的调用prev/next view, 加上animation动画, 可以达到一些不错的效果:
?
?
自定义的animation可以查看具体的XML, 比如从左边进来的一个动画:
?
当然最后不要忘记在你的Activity中override onTouch方法来获取手势action:
Android滑动手势的相关识别方法就为大家介绍到这里。