android监听左右滑动事件

原创 2016年03月06日 23:51:16

今天在做监听左右滑动的时候,在网上找了几篇帖子,然后按照拿上面的操作,但是总是莫名其妙的监听不了,真的是把人都气疯,但是最后凭着我坚强的毅力最后把这个问题解决了,所以特此在这个地方写一篇博客记录一下这个事件。参考博客
首先,你得创建一个android.view.GestureDetector(Gesture:手势Detector:识别)类的对象用来监听手示动作。代码如下

mGestureDetector = new GestureDetector(this, myGestureListener);

这里的myGestureListener是GestureDetector.SimpleOnGestureListener的一个对象,用来识别各种手势动作,源码中SimpleOnGestureListener实现的是OnGestureListener, OnDoubleTapListener这两个接口,如果你只是做检测左右滑动可以去只实现OnGestureListener,然后覆盖public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)方法
代码如下:

GestureDetector.SimpleOnGestureListener myGestureListener = new GestureDetector.SimpleOnGestureListener(){
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

            Log.e("<--滑动测试-->", "开始滑动");
            float x = e1.getX()-e2.getX();
            float x2 = e2.getX()-e1.getX();
            if(x>FLING_MIN_DISTANCE&&Math.abs(velocityX)>FLING_MIN_VELOCITY){
                  Toast.makeText(HuadongTestActivity.this, "向左手势", Toast.LENGTH_SHORT).show();  

                  startActivity(new Intent(HuadongTestActivity.this,HuadongOtherActivity.class));

            }else if(x2>FLING_MIN_DISTANCE&&Math.abs(velocityX)>FLING_MIN_VELOCITY){
                 Toast.makeText(HuadongTestActivity.this, "向右手势", Toast.LENGTH_SHORT).show(); 
            }

            return false;
        };
    };

解释一下onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)的四个参数
原来的英文解释

@param e1 The first down motion event that started the fling.
@param e2 The move motion event that triggered the current onFling.
@param velocityX The velocity of this fling measured in pixels per second
along the x axis.
@param velocityY The velocity of this fling measured in pixels per second
along the y axis.

@param e1 表示手势起点的移动事件 可以得到移动的起始位置的坐标
@param e1 当前手势点的移动事件 可以得到移动结束时的位置坐标
@param velocityX 每秒x轴方向移动的像素
@param velocityY 每秒y轴方向移动的像素

float x = e1.getX()-e2.getX();
float x2 = e2.getX()-e1.getX();     if(x>FLING_MIN_DISTANCE&&Math.abs(velocityX)>FLING_MIN_VELOCITY)

这段代码表示移动的距离大于自己规定的最小距离,并且移动的速度一定的大于最小速度,这样才做处理,向右的手势处理都差不多,看代码就明白。
关于最小距离,和最小速度,那个东西看自己的需求,这里给一个参考的代码

 private static final int FLING_MIN_DISTANCE = 50;   //最小距离 
  private static final int FLING_MIN_VELOCITY = 0;  .//最小速度

接下来应该将本activity的onTouch事件交给mGestureDetector来处理,
首先让自己的activity实现OnTouchListener接口,代码如下

public class HuadongTestActivity extends Activity implements OnTouchListener
//下面是实现OnTouch方法 并将处理touch时间交给mGestureDetector
@Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        return mGestureDetector.onTouchEvent(event);
    }

如果就这样的话始终完不成既定目标,还做在onCreate(Bundle savedInstanceState) 方法中做下面的操作

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_huadong_test);
        mGestureDetector = new GestureDetector(this, myGestureListener);
        RelativeLayout mRelativeLayout = (RelativeLayout)findViewById(R.id.id_testRelative);//布局的主容器
        mRelativeLayout.setOnTouchListener(this);//将主容器的监听交给本activity,本activity再交给mGestureDetector
         mRelativeLayout.setLongClickable(true);   //必需设置这为true 否则也监听不到手势 
    }

好,就这样了

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android实现界面左右滑动切换

相信大家一定都使用过手机QQ和微信之类的软件,当我们使用时不难发现其界面的切换不仅可以通过点击页标签来实现,还可以通过左右滑动来实现的,耗子君刚开始学Android时就觉得这样的滑动十分酷炫,十分想要...
  • Black__Lotus
  • Black__Lotus
  • 2016年03月04日 20:47
  • 22874

android onTouchEvent 左右手势滑动事件处理

要实现手指在屏幕上左右滑动的事件需要实例化对象GestureDetector,new GestureDetector(MainActivity.this,onGestureListener);首先实现...
  • getchance
  • getchance
  • 2013年01月07日 23:02
  • 57844

Android触屏滑动事件总结

屏幕切换指的是在同一个Activity内屏幕见的切换。 通过GestureDetector、OnGestureListener实现滑屏事件。ViewFlipper是继承至FrameLayout的,所...
  • xipiaoyouzi
  • xipiaoyouzi
  • 2012年09月15日 10:41
  • 10591

用Activity的onTouchEvent方法实现监听手指上下左右滑动

用Activity的onTouchEvent方法实现监听手指上下左右滑动 应用了Activity的ontouchEvent方法监听手指点击事件,手指滑动的时候会先按下,滑倒另一个地方再抬起,...
  • qiantujava
  • qiantujava
  • 2013年08月11日 19:27
  • 32944

android 滑动事件冲突解决 Touch事件处理机制

android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解。  一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN...
  • spt110
  • spt110
  • 2012年08月29日 13:46
  • 17833

Android 对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果

随着移动互联网的快速发展,它已经和我们的生活息息相关了,在公交地铁里面都能看到很多人的人低头看着自己的手机屏幕,从此“低头族”一词就产生了,作为一名移动行业的开发人员,我自己也是一名“低头族”,上下班...
  • xiaanming
  • xiaanming
  • 2013年12月20日 09:04
  • 99437

android 点击、滑动事件的处理 GestureDetector

当希望   处理       点击view  或者滑动屏幕 的 事件的时候  我们会设置一些  监听器 1、常规的点击滑动的事件处理 设置一些监听器、如button、seekBar 等的onCli...
  • a772890398
  • a772890398
  • 2016年01月20日 12:15
  • 4588

屏幕的上下左右滑动监听事件详解demo

  • 2016年04月07日 16:56
  • 1.41MB
  • 下载

聊聊对Android视图滚动状态的监听

在官方support.v4包里,提供给我们一个兼容类ViewCompat。ViewCompat里面针对几个版本有不同的实现,根据不同版本进行判断, 但是要注意的是,ViewCompat仅仅让你调用不崩...
  • zhangke3016
  • zhangke3016
  • 2017年01月22日 08:44
  • 1196

android手势操作滑动效果触摸屏事件处理

android手势操作滑动效果触摸屏事件处理 转自:http://www.cnblogs.com/olvo/archive/2012/04/14/2447328.html an...
  • comikey
  • comikey
  • 2012年12月13日 14:29
  • 14632
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android监听左右滑动事件
举报原因:
原因补充:

(最多只允许输入30个字)