0

ビデオ プレーヤー用のカスタム コントロール パネルを作成しました。ここで、デフォルトの MediaController のように、画面がタッチされるとパネルが表示され、最後のタッチ時間の後に再び非表示になるような効果を与えたいと考えています。そのためにこのタイプのコードを使用できます。

Thread thread = new Thread() {
            @Override
            public void run() {
                try {
                    Thread.sleep(60000);
                } catch (InterruptedException e) {
                }

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // make the panel invisible 
                    }
                });
            }
        };

画面に触れたときにスレッドを開始し、60 秒後に非表示にすることができます。しかし、私の場合、ユーザーがこの 60 秒の間に再び画面に触れると、最後のタッチから 60 秒後にパネルが消えるはずです。この場合もどう考えるか。

4

2 に答える 2

1

Runnables と aを組み合わせて使用​​することをお勧めしHandlerます。たとえば、60 秒後に何かを行うためにHandlerを使用して電話をかけることができます。postDelayed()

次に例を示します。

private Handler mHandler = new Handler();

mHandler.post(showControls); // Call this to show the controls

private Runnable showControls = new Runnable() {    
   public void run() {
      // Code to show controls
      mHandler.removeCallbacks(showControls);
      mHandler.postDelayed(hideControls, 60000);
   }
};

private Runnable hideControls = new Runnable() {
   public void run() {
      // Code to hide the controls
   }
};
于 2011-09-28T10:06:17.650 に答える
1

現在のタイマーを削除/キャンセルするだけです。

ところで、スレッドではなく、メッセージをハンドラーに投稿する必要があります。このような将来のタイマー タスクには、別のスレッドは必要ありません。

于 2011-09-28T10:06:22.693 に答える