Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StyledPlayerView.setOnClickListener doesn't work when useController=false #9605

Closed
eneim opened this issue Oct 25, 2021 · 3 comments
Closed
Assignees
Labels

Comments

@eneim
Copy link
Contributor

eneim commented Oct 25, 2021

As the title suggests, if I set useController to false (either from XML, or code), the click listener just doesn't work.

In onTouchEvent, StyledPlayerView returns false in such a case, so I think it was implemented that way, so I guess the current design is it should not accept a custom OnClickListener if the controller is disabled. Is there any reason why? What should I do to have custom click listener without using the controller?

ExoPlayer version: 2.15.1.
Tested device: LG G7/Android 10.

@eneim
Copy link
Contributor Author

eneim commented Oct 25, 2021

I found these 2 related issues that kinda the motivation to disable the touch:

#6340
#1923

IMO there are cases where the client doesn't enable the controller but still allows the user to click the video, for example, to switch between portrait and landscape. I'm curious if there is a way to enable such behavior.

I have an idea of using a custom Controller UI that doesn't show anything ... But want to know if there is another approach. Feel free to close this issue if the current decision is fixed.

@ojw28
Copy link
Contributor

ojw28 commented Mar 7, 2022

This doesn't seem ideal. It looks like there are some other broken cases as well. For example, registering a long click listener doesn't work, regardless of whether there's a controller or not. I'm going to try and remove overriding of onTouchEvent to fix this.

icbaker pushed a commit to androidx/media that referenced this issue Mar 9, 2022
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 view before ACTION_UP as a click,
   both for delivery to OnClickListener and for toggling
   the controls.

Note: After this change, control visibility will not be
toggled if the application developer explicitly sets the
view to be non-clickable. I think that's probably working
as intended though. It seems correct that a non-clickable
view would not respond to clicks.

Issue: google/ExoPlayer#8627
Issue: google/ExoPlayer#9605
Issue: google/ExoPlayer#9861
PiperOrigin-RevId: 433016626
icbaker pushed a commit that referenced this issue Mar 9, 2022
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 view before ACTION_UP as a click,
   both for delivery to OnClickListener and for toggling
   the controls.

Note: After this change, control visibility will not be
toggled if the application developer explicitly sets the
view to be non-clickable. I think that's probably working
as intended though. It seems correct that a non-clickable
view would not respond to clicks.

Issue: #8627
Issue: #9605
Issue: #9861
PiperOrigin-RevId: 433016626
@ojw28
Copy link
Contributor

ojw28 commented Mar 15, 2022

Fixed in dev-v2. The fix will be included in 2.18.

@ojw28 ojw28 closed this as completed Mar 15, 2022
@google google locked and limited conversation to collaborators May 14, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants