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;
}
}
};