延迟android中的onClick事件



我当前的代码如下:

        button1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                //blah
            }
        });

但是,我希望在我点击页面之后和执行onClick方法之前有1秒的延迟。我该怎么做?

为什么不尝试在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);
    }
});

在kotlin;

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

并在onClick功能中使用此扩展

 override fun onClick(v: View) {
        v.disableClickTemporarily()
        //...your code
    }
button1.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
          Handler  myHandler = new Handler();
         myHandler.postDelayed(mMyRunnable, 1000);
        }
    });

 Runnable  mMyRunnable = new Runnable() {   
    public void run() {
    } 
};
class DelayedClickListener(private val delayMillis : Long = 500 , private val function: (view: View?) -> Unit) : View.OnClickListener {
    override fun onClick(v: View?) {
        v?.let { view ->
            view.isClickable = false
            Handler().postDelayed({ view.isClickable = true }, abs(delayMillis))
        }
        function.invoke(v)
    }
}

然后你可以像下面这样使用它:

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

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

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

最新更新