Android 开发其中View是个很重要的点,View能自带监听点击,或长按功能,但是随着日常开发,系统的长按不一定能满足需求,比如有些需求是长按十秒触发动作,这种系统不一定能满足,怎么办呢?

这里我先给大家推荐一种思路和实现方式,通过Handler实现这种功能:

首先将点击的功能分成按下和抬起

按下时通过System.currentTimeMillis()方法记录按下时间,通过handler.sendEmptyMessageDelayed(flag,10000)延时发送消息

抬起时再次用System.currentTimeMillis()记录抬起时间,判断如果抬起时间-按下时间<10000,那么调用handler.removeMessages(flag)停止发送消息

初始化Handler,实现handleMessage()方法,通过msg.what==flag区分你的长按功能

下面是代码:

1.首先设置一些参数值

private long downTime;

private long upTime;

public static final int flag= 0x001;

2.创建按下方法

//按下

public void down() {

handler.removeMessages(flag);

downTime = System.currentTimeMillis();

handler.sendEmptyMessageDelayed(flag, 10000);

}

3.创建抬起方法

//抬起

public void up() {

upTime = System.currentTimeMillis();

if (upTime - downTime < 10000) {

handler.removeMessages(flag);

}

}

4.自定义handler

Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case flag:

//实现长按后的操作

break;

}

}

};

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐