0

我有一个应用程序,每次触摸 ImageButton 后我都需要延迟。

我尝试了 Thread.sleep() 方法,但我不确定这是否是处理它的最佳方法。

大家有什么推荐的?

任何帮助表示赞赏!

还有一件事:我希望触发 onTouch() 事件的内容,然后我想在下一个 onTouch() 事件中延迟“X”秒。这就像防止用户在按钮中单击太多次。

4

1 回答 1

4

由于所有触摸事件都由 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);
}
于 2012-09-08T02:51:15.533 回答