我有一个应用程序,每次触摸 ImageButton 后我都需要延迟。
我尝试了 Thread.sleep() 方法,但我不确定这是否是处理它的最佳方法。
大家有什么推荐的?
任何帮助表示赞赏!
还有一件事:我希望触发 onTouch() 事件的内容,然后我想在下一个 onTouch() 事件中延迟“X”秒。这就像防止用户在按钮中单击太多次。
我有一个应用程序,每次触摸 ImageButton 后我都需要延迟。
我尝试了 Thread.sleep() 方法,但我不确定这是否是处理它的最佳方法。
大家有什么推荐的?
任何帮助表示赞赏!
还有一件事:我希望触发 onTouch() 事件的内容,然后我想在下一个 onTouch() 事件中延迟“X”秒。这就像防止用户在按钮中单击太多次。
由于所有触摸事件都由 UI 线程处理,Thread.sleep()
因此会阻塞您的 UI 线程,这不是您想要的(我希望)。我认为解决您的问题的最正确方法是postDelayed(Runnable, long)
在您的处理程序中使用接口,onClick
这允许您延迟执行:
@Override
public void onClick(View v)
{
postDelayed(new Runnable()
{
@Override
public void run()
{
// do your stuff here
}
}, 10000); //10sec delay
}
更新:
如果您希望用户防止在您的图像视图上单击过快,我强烈建议您使用onClick
而不是onTouch
(除非有严重的原因)
但是,请参阅可能对您有所帮助的代码片段:
private boolean blocked = false;
private Handler handler = new Handler();
@Override
public boolean onTouchEvent(MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
if (!blocked)
{
blocked = true;
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
blocked = false;
}
}, 1000);
} else
{
return false;
}
}
return super.onTouchEvent(event);
}