ImageButtonをタッチするたびに遅延が必要なアプリがあります。
Thread.sleep()メソッドを試しましたが、これが最善の方法かどうかはわかりません。
何をお勧めしますか?
どんな助けでもありがたいです!
もう1つ:onTouch()イベントのコンテンツを起動してから、次のonTouch()イベントを「X」秒遅らせたい。これは、ユーザーがボタンを何度もクリックするのを防ぐようなものです。
ImageButtonをタッチするたびに遅延が必要なアプリがあります。
Thread.sleep()メソッドを試しましたが、これが最善の方法かどうかはわかりません。
何をお勧めしますか?
どんな助けでもありがたいです!
もう1つ: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);
}