在android中延迟onClick事件

时间:2013-07-31 03:09:42

标签: android

我目前的代码如下:

        button1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                //blah
            }
        });

但是,在我点击页面并执行onClick方法之前,我希望延迟1秒。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:5)

为什么不尝试在OnClick方法中添加延迟?你必须使用一个处理程序并在其上调用postDelayed方法:

button1.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                //Execute code here

            }
        }, 1000);

    }
});

答案 1 :(得分:1)

button1.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
          Handler  myHandler = new Handler();
         myHandler.postDelayed(mMyRunnable, 1000);
        }
    });


 Runnable  mMyRunnable = new Runnable() {   
    public void run() {

    } 
};

答案 2 :(得分:1)

class DelayedClickListener(private val delayMillis : Long = 500 , private val function: (view: View?) -> Unit) : View.OnClickListener {

    companion object {
        var allowToClick = true
    }

    override fun onClick(v: View?) {
        if(allowToClick) {
            if(delayMillis > 0){
                allowToClick = false
                Handler().postDelayed({ allowToClick = true }, delayMillis)
            }
            function.invoke(v)
        }
    }
}

然后您可以按以下方式使用它:

clickableView.setOnClickListener(DelayedClickListener { view ->
   //do what you want here
})

或者您可以在实现过程中设置延迟毫秒,如下所示:

clickableView.setOnClickListener(DelayedClickListener(delayMillis = 1000) { view ->
    //do what you want here
})

答案 3 :(得分:1)

在科特林;

fun View.disableClickTemporarily(){
    isClickable = false
    postDelayed({
        isClickable = true
    },500)
}

并在onClick函数中使用此扩展名

 override fun onClick(v: View) {
        v.disableClickTemporarily()
        //...your code
    }