当前位置: 移动技术网 > IT编程>移动开发>Android > Android 单双击实现的方法步骤

Android 单双击实现的方法步骤

2020年03月09日  | 移动技术网IT编程  | 我要评论

zzcgs,315晚会视频,交通违章代码查询

记录单击、双击实现过程,进行简单的封装,便于复用,包括常用的软件双击退出。

双击实现:记录第一次点击时间,在设定时间内再次点击,则返回监听事件,否则不做处理;application双击退出亦是同样的实现逻辑。

/**
 * 双击实现
 *
 * @author 几圈年轮
 */
public abstract class basedoubleclicklistener implements view.onclicklistener {

  private static final long double_time = 500;
  private static long lastclicktime = 0;

  @override
  public void onclick(view v) {
    long currenttimemillis = system.currenttimemillis();
    if (currenttimemillis - lastclicktime < double_time) {
      ondoubleclick(v);
    }
    lastclicktime = currenttimemillis;
  }

  /**
   * 双击事件
   *
   * @param v 视图
   */
  public abstract void ondoubleclick(view v);

}

调用方式:

view.setonclicklistener(new basedoubleclicklistener() {
  @override
  public void ondoubleclick(view v) {
    
  }
});

application双击退出:

private long onbackpressedtime;
@override
public void onbackpressed() {
  long timespan = system.currenttimemillis() - onbackpressedtime;
  onbackpressedtime = system.currenttimemillis();
  if (timespan > 2000) {
    toast.maketext(this, getresources().getstring(r.string.exit), toast.length_short).show();
  } else {
    super.onbackpressed();
  }
}

单击及双击实现:使用handler进行延时消息发送,通过计数获取点击次数,若设定时间内点击两次则返回双击事件;单次,则返回单击事件。

/**
 * 单击、双击实现
 *
 * @author 几圈年轮
 */

public abstract class baseclicklistener implements view.onclicklistener {

  private static final int timeout = 400;

  private int clickcount = 0;
  private handler handler;

  protected baseclicklistener() {
    handler = new handler();
  }

  @override
  public void onclick(view v) {
    clickcount++;
    handler.postdelayed(new runnable() {
      @override
      public void run() {
        if (clickcount == 1) {
          onsingleclick(v);
        } else if (clickcount == 2) {
          ondoubleclick(v);
        }
        handler.removecallbacksandmessages(null);
        clickcount = 0;
      }
    }, timeout);
  }

  /**
   * 单击实现
   *
   * @param v 视图
   */
  public abstract void onsingleclick(view v);

  /**
   * 双击实现
   *
   * @param v 视图
   */
  public abstract void ondoubleclick(view v);

}

调用方式:

view.setonclicklistener(new baseclicklistener() {
  
  @override
  public void onsingleclick(view v) {

  }

  @override
  public void ondoubleclick(view v) {
   
  }
});

主要重写了view的onclicklistener事件,也可以重写ontouchlistener进行处理;采用抽象类抽象方法,也可使用接口封装进行处理。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网