美文网首页
Android中的点击事件--双击事件

Android中的点击事件--双击事件

作者: __Witness | 来源:发表于2020-06-08 15:12 被阅读0次
近期,在做公司的项目中,接到一个需求(app中首页下方的tab按钮选择时,单击切换tab,双击当前的tab页面内容滑动到顶部同时刷新数据)。总的来说,这个需求没有什么难度。
  • 单击 -- 使用Android系统提供的OnClickListener接口即可实现
  • 双击 -- Android系统中并未定义这类事件,所以需要我们自己定义。

好了,话不多说,记录一下双击事件的定义。

直接上代码。为双击点击事件命名为OnDoubleClickListener。让它实现View.OnTouchListener接口,重新onTouch方法。

//记录点击次数
private int count = 0;   
//记录第一次点击时间           
private long firstClick = 0;   
//记录第二次点击时间           
private long secondClick = 0;
//两次点击时间间隔,单位毫秒
private final int totalTime = 1000;
//自定义回调接口,用于进行双击事件的回调给调用者
private DoubleClickCallback mCallback;


public interface DoubleClickCallback {
    void onDoubleClick();
}

public OnDoubleClickListener(DoubleClickCallback callback) {
    super();
    this.mCallback = callback;
}

/**
 * 触摸事件处理
 */
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
    if (MotionEvent.ACTION_DOWN == event.getAction()) {//按下
        count++;
        if (1 == count) {
            firstClick = System.currentTimeMillis();//记录第一次点击时间
        } else if (2 == count) {
            secondClick = System.currentTimeMillis();//记录第二次点击时间
            if (secondClick - firstClick < totalTime) {//判断二次点击时间间隔是否在设定的间隔时间之内
                if (mCallback != null) {
                    mCallback.onDoubleClick();
                }
                count = 0;
                firstClick = 0;
            } else {
                firstClick = secondClick;
                count = 1;
            }
            secondClick = 0;
        }
    }
    return true;
}

具体的实现思路就是记录两次MotionEvent.ACTION_DOWN事件触发的时间点,然后计算他们两个事件的时间差值,如果这个时间差值小于totalTime(自己定义的时间差参考值)则属于双击事件,否则为单击事件。

在需求中存在的问题: 因为tab的点击事件中,同时要有单击事件和双击事件。按照自定义双击事件的逻辑(当点击一下后,需要等到自己定义的时间差值后,才能确定本次事件是单机和双击),所以造成的缺陷问题就是,单击tab需要等一个时间差值后,事件的回调函数才会触发,页面才会切换。双击事件的回调无明显问题。

相关文章

  • Android中的点击事件--双击事件

    近期,在做公司的项目中,接到一个需求(app中首页下方的tab按钮选择时,单击切换tab,双击当前的tab页面内容...

  • 常用事件

    鼠标事件 onclick 点击事件点击鼠标左键触发 ondblclick双击事件双击鼠标左键触发 onmouseo...

  • 鼠标事件

    1. 鼠标事件 // 点击事件 onclick // 双击事件 ondblclick // 鼠标右键点击事件 on...

  • Android双击事件实现

    双击退出应用 双击响应事件 利用Handler控制点击事件

  • 使用GestureDectector进行TextView、自定义

    参考Android中的双击事件使用如下代码对TextView进行双击监听,发现怎么也触发不了双击事件。 查阅资料之...

  • Android连续多次点击事件处理

    Android开发中点击事件最常见和使用最多的事件,系统只提供了单击和长按事件。有时候可能有双击或多次点击交互的需...

  • Android事件传递机制之View

    Android Touch事件 在Android中,事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另...

  • android_自定义多击事件

    自定义双击事件 点击事件:在控件上按下,离开,有瞬间的停留。 双击事件:在单位时间内,双击。 多击事件:在单位时间...

  • Android中的双击事件

    一般来说Android用户比较熟悉的按钮交互方式有两种:单击与长按。双击这个交互且不说合不合理,但需求来了总是要做...

  • 常见的事件

    1、点击事件: 1)、onclick: 单击事件 2)、ondblclick: 双击事件 2、焦点事件 1)、on...

网友评论

      本文标题:Android中的点击事件--双击事件

      本文链接:https://www.haomeiwen.com/subject/wlgazhtx.html