OnTouch延迟(Android)

时间:2012-09-08 02:42:26

标签: android

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

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

你们推荐什么?

感谢任何帮助!

还有一件事:我想要触发onTouch()事件的内容然后我想在下一个onTouch()事件中延迟“X”秒。这样可以防止用户在按钮中点击太多次。

1 个答案:

答案 0 :(得分:3)

由于所有触摸事件都由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);
}