Пользовательская панель управления Android MediaPlayer скрыть - PullRequest
0 голосов
/ 28 сентября 2011

Я создал пользовательскую панель управления для видеоплеера.Теперь я хочу создать эффект 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 секунд после последнего касания.Как рассмотреть этот случай также?

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Просто удалите / отмените текущий таймер.

Кстати, вы должны делать это не по теме, а путем отправки сообщения обработчику. Такая будущая задача таймера не нуждается в другом потоке.

1 голос
/ 28 сентября 2011

Я бы порекомендовал использовать комбинацию Runnable s и Handler.Вы можете сделать Handler вызовы, используя postDelayed(), чтобы сделать что-то, скажем, через 60 секунд.

Вот пример:

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
   }
};
...