Кнопка Android назад и MediaController
Я знаю, как взять под контроль кнопку "Назад" . У меня есть VideoView
, встроенный в FrameLayout
. Мой вопрос в том, когда видео всплывает, элементы управления видео присутствуют на несколько секунд. Нажатие кнопки "Назад" во время видимости скрывает элементы управления видео. Есть ли способ игнорировать эту функцию и выполнить следующее обратное действие, как если бы элементы управления видео не были видны?
Я прошу, если я действительно хочу вернуться, я должен дважды нажать кнопку "Назад" ; один раз, чтобы скрыть элементы управления, а затем, чтобы вернуться назад
Ответы
Ответ 1
На основе исходного кода это должно работать:
- Расширить
MediaController
(для целей этого ответа назовите его RonnieMediaController
)
- Переопределить
dispatchKeyEvent()
в RonnieMediaController
- Перед привязкой к суперклассу проверьте
KeyEvent.KEYCODE_BACK
, и если это произойдет, сообщите своей активности finish()
- Используйте
RonnieMediaController
вместо MediaController
с помощью VideoView
Лично я просто оставлю это в покое, так как с этим изменением ваш пользователь не может заставить RonnieMediaController
исчезнуть по требованию.
Ответ 2
Вы можете просто написать:
mVideoView.setMediaController(new MediaController(this){
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK)
((Activity) getContext()).finish();
return super.dispatchKeyEvent(event);
}
});
Не нужно создавать новый класс.
Ответ 3
Вы также можете обработать событие Event:
mVideoView.setMediaController(new MediaController(this){
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK ) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
((Activity) getContext()).onBackPressed();
return true;
}
}
return super.dispatchKeyEvent(event);
}
});
Затем обработайте его в своей деятельности:
@Override
public void onBackPressed() {
// clean up or send result here
finish();
}