0

ImageButtonをタッチするたびに遅延が必要なアプリがあります。

Thread.sleep()メソッドを試しましたが、これが最善の方法かどうかはわかりません。

何をお勧めしますか?

どんな助けでもありがたいです!

もう1つ: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 に答える