欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 单双击实现的方法步骤

程序员文章站 2022-03-04 17:05:03
记录单击、双击实现过程,进行简单的封装,便于复用,包括常用的软件双击退出。 双击实现:记录第一次点击时间,在设定时间内再次点击,则返回监听事件,否则不做处理;applicatio...

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

双击实现:记录第一次点击时间,在设定时间内再次点击,则返回监听事件,否则不做处理;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进行处理;采用抽象类抽象方法,也可使用接口封装进行处理。

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