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

来源:互联网 发布:张万桑作品集知乎 编辑:程序博客网 时间:2024/05/16 13:47

首先要得到触摸事件,这个触摸事件有坑,在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;            }        });



0 0
原创粉丝点击