Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
d7c71610
authored
Apr 14, 2021
by
olly
Committed by
Andrew Lewis
Apr 15, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Core/UI decoupling: Replace SingleTapListener with OnClickListener
PiperOrigin-RevId: 368448442
parent
54f3dfb4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
25 additions
and
32 deletions
library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/SphericalGLSurfaceView.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/TouchTracker.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java
View file @
d7c71610
...
...
@@ -61,7 +61,6 @@ import com.google.android.exoplayer2.text.Cue;
import
com.google.android.exoplayer2.trackselection.TrackSelectionArray
;
import
com.google.android.exoplayer2.trackselection.TrackSelectionUtil
;
import
com.google.android.exoplayer2.ui.AspectRatioFrameLayout.ResizeMode
;
import
com.google.android.exoplayer2.ui.spherical.SingleTapListener
;
import
com.google.android.exoplayer2.ui.spherical.SphericalGLSurfaceView
;
import
com.google.android.exoplayer2.util.Assertions
;
import
com.google.android.exoplayer2.util.ErrorMessageProvider
;
...
...
@@ -426,9 +425,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
surfaceView
=
new
TextureView
(
context
);
break
;
case
SURFACE_TYPE_SPHERICAL_GL_SURFACE_VIEW:
SphericalGLSurfaceView
sphericalGLSurfaceView
=
new
SphericalGLSurfaceView
(
context
);
sphericalGLSurfaceView
.
setSingleTapListener
(
componentListener
);
surfaceView
=
sphericalGLSurfaceView
;
surfaceView
=
new
SphericalGLSurfaceView
(
context
);
surfaceViewIgnoresVideoAspectRatio
=
true
;
break
;
case
SURFACE_TYPE_VIDEO_DECODER_GL_SURFACE_VIEW:
...
...
@@ -439,6 +436,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
break
;
}
surfaceView
.
setLayoutParams
(
params
);
surfaceView
.
setOnClickListener
(
componentListener
);
contentFrame
.
addView
(
surfaceView
,
0
);
}
else
{
surfaceView
=
null
;
...
...
@@ -1486,7 +1484,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
implements
Player
.
Listener
,
VideoListener
,
OnLayoutChangeListener
,
SingleTap
Listener
,
OnClick
Listener
,
PlayerControlView
.
VisibilityListener
{
private
final
Period
period
;
...
...
@@ -1613,11 +1611,11 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
applyTextureViewRotation
((
TextureView
)
view
,
textureViewRotation
);
}
//
SingleTap
Listener implementation
//
OnClick
Listener implementation
@Override
public
boolean
onSingleTapUp
(
MotionEvent
e
)
{
return
toggleControllerVisibility
();
public
void
onClick
(
View
view
)
{
toggleControllerVisibility
();
}
// PlayerControlView.VisibilityListener implementation
...
...
library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java
View file @
d7c71610
...
...
@@ -63,7 +63,6 @@ import com.google.android.exoplayer2.text.TextOutput;
import
com.google.android.exoplayer2.trackselection.TrackSelectionArray
;
import
com.google.android.exoplayer2.trackselection.TrackSelectionUtil
;
import
com.google.android.exoplayer2.ui.AspectRatioFrameLayout.ResizeMode
;
import
com.google.android.exoplayer2.ui.spherical.SingleTapListener
;
import
com.google.android.exoplayer2.ui.spherical.SphericalGLSurfaceView
;
import
com.google.android.exoplayer2.util.Assertions
;
import
com.google.android.exoplayer2.util.ErrorMessageProvider
;
...
...
@@ -433,9 +432,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
surfaceView
=
new
TextureView
(
context
);
break
;
case
SURFACE_TYPE_SPHERICAL_GL_SURFACE_VIEW:
SphericalGLSurfaceView
sphericalGLSurfaceView
=
new
SphericalGLSurfaceView
(
context
);
sphericalGLSurfaceView
.
setSingleTapListener
(
componentListener
);
surfaceView
=
sphericalGLSurfaceView
;
surfaceView
=
new
SphericalGLSurfaceView
(
context
);
surfaceViewIgnoresVideoAspectRatio
=
true
;
break
;
case
SURFACE_TYPE_VIDEO_DECODER_GL_SURFACE_VIEW:
...
...
@@ -446,6 +443,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
break
;
}
surfaceView
.
setLayoutParams
(
params
);
surfaceView
.
setOnClickListener
(
componentListener
);
contentFrame
.
addView
(
surfaceView
,
0
);
}
else
{
surfaceView
=
null
;
...
...
@@ -1509,7 +1507,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
TextOutput
,
VideoListener
,
OnLayoutChangeListener
,
SingleTap
Listener
,
OnClick
Listener
,
StyledPlayerControlView
.
VisibilityListener
{
private
final
Period
period
;
...
...
@@ -1636,11 +1634,11 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
applyTextureViewRotation
((
TextureView
)
view
,
textureViewRotation
);
}
//
SingleTap
Listener implementation
//
OnClick
Listener implementation
@Override
public
boolean
onSingleTapUp
(
MotionEvent
e
)
{
return
toggleControllerVisibility
();
public
void
onClick
(
View
view
)
{
toggleControllerVisibility
();
}
// StyledPlayerControlView.VisibilityListener implementation
...
...
library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/SphericalGLSurfaceView.java
View file @
d7c71610
...
...
@@ -27,6 +27,7 @@ import android.os.Handler;
import
android.os.Looper
;
import
android.util.AttributeSet
;
import
android.view.Display
;
import
android.view.MotionEvent
;
import
android.view.Surface
;
import
android.view.WindowManager
;
import
androidx.annotation.AnyThread
;
...
...
@@ -144,11 +145,6 @@ public final class SphericalGLSurfaceView extends GLSurfaceView {
}
}
/** Sets the {@link SingleTapListener} used to listen to single tap events on this view. */
public
void
setSingleTapListener
(
@Nullable
SingleTapListener
listener
)
{
touchTracker
.
setSingleTapListener
(
listener
);
}
/** Sets whether to use the orientation sensor for rotation (if available). */
public
void
setUseSensorRotation
(
boolean
useSensorRotation
)
{
this
.
useSensorRotation
=
useSensorRotation
;
...
...
@@ -325,6 +321,12 @@ public final class SphericalGLSurfaceView extends GLSurfaceView {
Matrix
.
setRotateM
(
touchYawMatrix
,
0
,
-
scrollOffsetDegrees
.
x
,
0
,
1
,
0
);
}
@Override
@UiThread
public
boolean
onSingleTapUp
(
MotionEvent
event
)
{
return
performClick
();
}
private
float
calculateFieldOfViewInYDirection
(
float
aspect
)
{
boolean
landscapeMode
=
aspect
>
1
;
if
(
landscapeMode
)
{
...
...
library/ui/src/main/java/com/google/android/exoplayer2/ui/spherical/TouchTracker.java
View file @
d7c71610
...
...
@@ -21,7 +21,6 @@ import android.view.GestureDetector;
import
android.view.MotionEvent
;
import
android.view.View
;
import
androidx.annotation.BinderThread
;
import
androidx.annotation.Nullable
;
/**
* Basic touch input system.
...
...
@@ -47,8 +46,12 @@ import androidx.annotation.Nullable;
/* package */
final
class
TouchTracker
extends
GestureDetector
.
SimpleOnGestureListener
implements
View
.
OnTouchListener
,
OrientationListener
.
Listener
{
/* package */
interface
Listener
{
public
interface
Listener
{
void
onScrollChange
(
PointF
scrollOffsetDegrees
);
default
boolean
onSingleTapUp
(
MotionEvent
event
)
{
return
false
;
}
}
// Touch input won't change the pitch beyond +/- 45 degrees. This reduces awkward situations
...
...
@@ -65,7 +68,6 @@ import androidx.annotation.Nullable;
// The conversion from touch to yaw & pitch requires compensating for device roll. This is set
// on the sensor thread and read on the UI thread.
private
volatile
float
roll
;
@Nullable
private
SingleTapListener
singleTapListener
;
@SuppressWarnings
({
"nullness:assignment.type.incompatible"
,
...
...
@@ -78,10 +80,6 @@ import androidx.annotation.Nullable;
roll
=
SphericalGLSurfaceView
.
UPRIGHT_ROLL
;
}
public
void
setSingleTapListener
(
@Nullable
SingleTapListener
listener
)
{
singleTapListener
=
listener
;
}
/**
* Converts ACTION_MOVE events to pitch & yaw events while compensating for device roll.
*
...
...
@@ -125,10 +123,7 @@ import androidx.annotation.Nullable;
@Override
public
boolean
onSingleTapUp
(
MotionEvent
e
)
{
if
(
singleTapListener
!=
null
)
{
return
singleTapListener
.
onSingleTapUp
(
e
);
}
return
false
;
return
listener
.
onSingleTapUp
(
e
);
}
@Override
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment