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

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值