zoukankan      html  css  js  c++  java
  • GestureDetector类的用法

    不要重复造轮子。 很多控件都为我们提供了双击等事件的处理。但还是有一部分控件没用提供较好的帮助。 那么我们就可以使用GestureDetector来弥补此处的不足。 尽量不要自己去重复实现双击等事件。 因为这样你会损失掉一部分内容。

    步骤:

    1. 在onCreate 方法中去创建

      mGestureDetector = new GestureDetector(this, new MyGestureListener()); 


    2. 把普通的触摸事件,抛给GestureDetector来处理

    控件.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    //采用手势来处理
    return this.gestureDetector.onTouchEvent(event);
    }
    });


    3. 实现自己的GestureDetector,完成代码:MyGestureListener。


    下面就要介绍一怎样扩展MyGestureListener来实现我们的功能需求。

    1. 双击事件:

    gestureDetector.setOnDoubleTapListener(new OnDoubleTapListener() {
    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
    return false;
    }

    @Override
    public boolean onDoubleTapEvent(MotionEvent e) {
    return false;
    }

    @Override
    public boolean onDoubleTap(MotionEvent e) {
    //事件处理,普通是双击都是这么干的。
    return false;
    }
    });

    2. 水平移动,判断是水平移动还是垂直移动的事件。

           @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    if(Math.abs(e1.getX() - e2.getX()) - Math.abs(e1.getY() - e2.getY()) > 0) {
    Toast.makeText(NewViewActivity.this, "xxxx", Toast.LENGTH_SHORT).show();
    } else{
    Toast.makeText(NewViewActivity.this, "yyyy", Toast.LENGTH_SHORT).show();
    }
    return false;
    }




  • 相关阅读:
    005 Stream的创建
    006 虚拟主机
    002 nginx的进程模型
    001 胡说八道
    001 nginx的简介和安装
    004 docker配置国内镜像站
    012 SSH
    发放失败,此请求可能存在风险,已被微信拦截【未解决】
    项目使用Nuget,然后SVN checkout后显示缺少引用
    使用存储过程非常慢,但是直接执行SQL很快
  • 原文地址:https://www.cnblogs.com/xitang/p/2217986.html
Copyright © 2011-2022 走看看