Android长按按钮模拟多次点击的效果的代码

首先要得到触摸事件,这个触摸事件有坑,在activity中是得不到的,必须从view中得到。通过重写view的onInterceptTouchEvent方法拦截到这个触摸事件,再通过一个boolean变量记录触摸的状态,代码如下。

public class MyLinearLayout extends LinearLayout {

    public boolean isPressed = false;

    public CustomLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomLinearLayout(Context context) {
        super(context);
    }


    /**
     * 拦截控件的触摸事件分发方法,对触摸事件进行判断
     */
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            // 触摸按下
            case MotionEvent.ACTION_DOWN:
                isPressed = true;
                break;
            // 触摸抬起
            case MotionEvent.ACTION_UP:
                isPressed = false;
                break;
        }
        return super.onInterceptTouchEvent(ev);
    }
}
然后就是在activity中对控件设置点击的监听回调,代码如下。

        // 设置监听回调
        btnSubtractLight.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                new Thread(){
                    @Override
                    public void run() {
                        while(linearLayout.isPressed){
                            // 此处放需要执行的代码
                            SystemClock.sleep(100);
                        }
                    }
                }.start();
                return true;
            }
        });



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值