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