Android 實現長按功能

Android 開發其中View是個很重要的點,View能自帶監聽點擊,或長按功能,但是隨着日常開發,系統的長按不一定能滿足需求,比如有些需求是長按十秒觸發動作,這種系統不一定能滿足,怎麼辦呢?

這裏我先給大家推薦一種思路和實現方式,通過Handler實現這種功能:

  1. 首先將點擊的功能分成按下和擡起
  2. 按下時通過System.currentTimeMillis()方法記錄按下時間,通過handler.sendEmptyMessageDelayed(flag,10000)延時發送消息
  3. 擡起時再次用System.currentTimeMillis()記錄擡起時間,判斷如果擡起時間-按下時間<10000,那麼調用handler.removeMessages(flag)停止發送消息
  4. 初始化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;
              
            }
        }
    };

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章