mirror of
https://github.com/samsonjs/media.git
synced 2026-03-27 09:45:47 +00:00
Rollback of 20282151b5
*** Original commit *** Fix PlayerView touch handling Overriding onTouchEvent was causing multiple issues, and appears to be unnecessary. Removing the override fixes: 1. StyledPlayerView accessibility issue where "hide player controls" actually toggled play/pause. 2. Delivery of events to a registered OnClickListener when useController is false. 3. Delivery of events to a registered OnLongClickListener in all configurations. 4. Incorrectly treating a sequence of touch events that exit the bounds of the vi... *** PiperOrigin-RevId: 433262414
This commit is contained in:
parent
82a50154db
commit
ff6e641fbb
3 changed files with 53 additions and 21 deletions
|
|
@ -35,17 +35,6 @@
|
|||
views to be used with other `Player` implementations, and removes the
|
||||
dependency from the UI module to the ExoPlayer module. This is a
|
||||
breaking change.
|
||||
* UI:
|
||||
* Fix delivery of events to `OnClickListener`s set on `StyledPlayerView`
|
||||
and `PlayerView`, in the case that `useController=false`
|
||||
([#9605](https://github.com/google/ExoPlayer/issues/9605)). Also fix
|
||||
delivery of events to `OnLongClickListener` for all view configurations.
|
||||
* Fix incorrectly treating a sequence of touch events that exit the bounds
|
||||
of `StyledPlayerView` and `PlayerView` before `ACTION_UP` as a click
|
||||
([#9861](https://github.com/google/ExoPlayer/issues/9861)).
|
||||
* Fix `StyledPlayerView` accessibility issue where it was not possible to
|
||||
tapping would toggle playback rather than hiding the controls
|
||||
([#8627](https://github.com/google/ExoPlayer/issues/8627)).
|
||||
* RTSP:
|
||||
* Add RTP reader for HEVC
|
||||
([#36](https://github.com/androidx/media/pull/36)).
|
||||
|
|
|
|||
|
|
@ -397,7 +397,6 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
|
|||
|
||||
LayoutInflater.from(context).inflate(playerLayoutId, this);
|
||||
setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
|
||||
setClickable(true);
|
||||
|
||||
// Content frame.
|
||||
contentFrame = findViewById(R.id.exo_content_frame);
|
||||
|
|
@ -1073,10 +1072,31 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
|
|||
return subtitleView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
if (!useController() || player == null) {
|
||||
return false;
|
||||
}
|
||||
switch (event.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
isTouching = true;
|
||||
return true;
|
||||
case MotionEvent.ACTION_UP:
|
||||
if (isTouching) {
|
||||
isTouching = false;
|
||||
performClick();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performClick() {
|
||||
toggleControllerVisibility();
|
||||
return super.performClick();
|
||||
super.performClick();
|
||||
return toggleControllerVisibility();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -1172,15 +1192,16 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
|
|||
return false;
|
||||
}
|
||||
|
||||
private void toggleControllerVisibility() {
|
||||
private boolean toggleControllerVisibility() {
|
||||
if (!useController() || player == null) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
if (!controller.isVisible()) {
|
||||
maybeShowController(true);
|
||||
} else if (controllerHideOnTouch) {
|
||||
controller.hide();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Shows the playback controls, but only if forced or shown indefinitely. */
|
||||
|
|
|
|||
|
|
@ -311,7 +311,6 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
|
|||
|
||||
LayoutInflater.from(context).inflate(playerLayoutId, this);
|
||||
setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
|
||||
setClickable(true);
|
||||
|
||||
// Content frame.
|
||||
contentFrame = findViewById(R.id.exo_content_frame);
|
||||
|
|
@ -1019,10 +1018,30 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
|
|||
return subtitleView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
if (!useController() || player == null) {
|
||||
return false;
|
||||
}
|
||||
switch (event.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
isTouching = true;
|
||||
return true;
|
||||
case MotionEvent.ACTION_UP:
|
||||
if (isTouching) {
|
||||
isTouching = false;
|
||||
return performClick();
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performClick() {
|
||||
toggleControllerVisibility();
|
||||
return super.performClick();
|
||||
super.performClick();
|
||||
return toggleControllerVisibility();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -1118,15 +1137,18 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
|
|||
return false;
|
||||
}
|
||||
|
||||
private void toggleControllerVisibility() {
|
||||
private boolean toggleControllerVisibility() {
|
||||
if (!useController() || player == null) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
if (!controller.isFullyVisible()) {
|
||||
maybeShowController(true);
|
||||
return true;
|
||||
} else if (controllerHideOnTouch) {
|
||||
controller.hide();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Shows the playback controls, but only if forced or shown indefinitely. */
|
||||
|
|
|
|||
Loading…
Reference in a new issue