Keep controller visible on d-pad key events

PiperOrigin-RevId: 250661977
This commit is contained in:
olly 2019-05-30 11:54:15 +01:00 committed by Toni
parent b8ec05aea1
commit 6e7012413b
2 changed files with 16 additions and 5 deletions

View file

@ -24,6 +24,8 @@
`PlayerControlView`.
* Change playback controls toggle from touch down to touch up events
([#5784](https://github.com/google/ExoPlayer/issues/5784)).
* Fix issue where playback controls were not kept visible on key presses
([#5963](https://github.com/google/ExoPlayer/issues/5963)).
* Add a workaround for broken raw audio decoding on Oppo R9
([#5782](https://github.com/google/ExoPlayer/issues/5782)).
* Offline:

View file

@ -772,11 +772,20 @@ public class PlayerView extends FrameLayout implements AdsLoader.AdViewProvider
if (player != null && player.isPlayingAd()) {
return super.dispatchKeyEvent(event);
}
boolean isDpadWhenControlHidden =
isDpadKey(event.getKeyCode()) && useController && !controller.isVisible();
boolean handled =
isDpadWhenControlHidden || dispatchMediaKeyEvent(event) || super.dispatchKeyEvent(event);
if (handled) {
boolean isDpadAndUseController = isDpadKey(event.getKeyCode()) && useController;
boolean handled = false;
if (isDpadAndUseController && !controller.isVisible()) {
// Handle the key event by showing the controller.
maybeShowController(true);
handled = true;
} else if (dispatchMediaKeyEvent(event) || super.dispatchKeyEvent(event)) {
// The key event was handled as a media key or by the super class. We should also show the
// controller, or extend its show timeout if already visible.
maybeShowController(true);
handled = true;
} else if (isDpadAndUseController) {
// The key event wasn't handled, but we should extend the controller's show timeout.
maybeShowController(true);
}
return handled;