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

 

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