Commit d7c71610 by olly Committed by Andrew Lewis

Core/UI decoupling: Replace SingleTapListener with OnClickListener

PiperOrigin-RevId: 368448442
parent 54f3dfb4
...@@ -61,7 +61,6 @@ import com.google.android.exoplayer2.text.Cue; ...@@ -61,7 +61,6 @@ import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.trackselection.TrackSelectionUtil; import com.google.android.exoplayer2.trackselection.TrackSelectionUtil;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout.ResizeMode; 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.ui.spherical.SphericalGLSurfaceView;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.ErrorMessageProvider; import com.google.android.exoplayer2.util.ErrorMessageProvider;
...@@ -426,9 +425,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider { ...@@ -426,9 +425,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
surfaceView = new TextureView(context); surfaceView = new TextureView(context);
break; break;
case SURFACE_TYPE_SPHERICAL_GL_SURFACE_VIEW: case SURFACE_TYPE_SPHERICAL_GL_SURFACE_VIEW:
SphericalGLSurfaceView sphericalGLSurfaceView = new SphericalGLSurfaceView(context); surfaceView = new SphericalGLSurfaceView(context);
sphericalGLSurfaceView.setSingleTapListener(componentListener);
surfaceView = sphericalGLSurfaceView;
surfaceViewIgnoresVideoAspectRatio = true; surfaceViewIgnoresVideoAspectRatio = true;
break; break;
case SURFACE_TYPE_VIDEO_DECODER_GL_SURFACE_VIEW: case SURFACE_TYPE_VIDEO_DECODER_GL_SURFACE_VIEW:
...@@ -439,6 +436,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider { ...@@ -439,6 +436,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
break; break;
} }
surfaceView.setLayoutParams(params); surfaceView.setLayoutParams(params);
surfaceView.setOnClickListener(componentListener);
contentFrame.addView(surfaceView, 0); contentFrame.addView(surfaceView, 0);
} else { } else {
surfaceView = null; surfaceView = null;
...@@ -1486,7 +1484,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider { ...@@ -1486,7 +1484,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
implements Player.Listener, implements Player.Listener,
VideoListener, VideoListener,
OnLayoutChangeListener, OnLayoutChangeListener,
SingleTapListener, OnClickListener,
PlayerControlView.VisibilityListener { PlayerControlView.VisibilityListener {
private final Period period; private final Period period;
...@@ -1613,11 +1611,11 @@ public class PlayerView extends FrameLayout implements AdViewProvider { ...@@ -1613,11 +1611,11 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
applyTextureViewRotation((TextureView) view, textureViewRotation); applyTextureViewRotation((TextureView) view, textureViewRotation);
} }
// SingleTapListener implementation // OnClickListener implementation
@Override @Override
public boolean onSingleTapUp(MotionEvent e) { public void onClick(View view) {
return toggleControllerVisibility(); toggleControllerVisibility();
} }
// PlayerControlView.VisibilityListener implementation // PlayerControlView.VisibilityListener implementation
......
...@@ -63,7 +63,6 @@ import com.google.android.exoplayer2.text.TextOutput; ...@@ -63,7 +63,6 @@ import com.google.android.exoplayer2.text.TextOutput;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.trackselection.TrackSelectionUtil; import com.google.android.exoplayer2.trackselection.TrackSelectionUtil;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout.ResizeMode; 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.ui.spherical.SphericalGLSurfaceView;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.ErrorMessageProvider; import com.google.android.exoplayer2.util.ErrorMessageProvider;
...@@ -433,9 +432,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider { ...@@ -433,9 +432,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
surfaceView = new TextureView(context); surfaceView = new TextureView(context);
break; break;
case SURFACE_TYPE_SPHERICAL_GL_SURFACE_VIEW: case SURFACE_TYPE_SPHERICAL_GL_SURFACE_VIEW:
SphericalGLSurfaceView sphericalGLSurfaceView = new SphericalGLSurfaceView(context); surfaceView = new SphericalGLSurfaceView(context);
sphericalGLSurfaceView.setSingleTapListener(componentListener);
surfaceView = sphericalGLSurfaceView;
surfaceViewIgnoresVideoAspectRatio = true; surfaceViewIgnoresVideoAspectRatio = true;
break; break;
case SURFACE_TYPE_VIDEO_DECODER_GL_SURFACE_VIEW: case SURFACE_TYPE_VIDEO_DECODER_GL_SURFACE_VIEW:
...@@ -446,6 +443,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider { ...@@ -446,6 +443,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
break; break;
} }
surfaceView.setLayoutParams(params); surfaceView.setLayoutParams(params);
surfaceView.setOnClickListener(componentListener);
contentFrame.addView(surfaceView, 0); contentFrame.addView(surfaceView, 0);
} else { } else {
surfaceView = null; surfaceView = null;
...@@ -1509,7 +1507,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider { ...@@ -1509,7 +1507,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
TextOutput, TextOutput,
VideoListener, VideoListener,
OnLayoutChangeListener, OnLayoutChangeListener,
SingleTapListener, OnClickListener,
StyledPlayerControlView.VisibilityListener { StyledPlayerControlView.VisibilityListener {
private final Period period; private final Period period;
...@@ -1636,11 +1634,11 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider { ...@@ -1636,11 +1634,11 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
applyTextureViewRotation((TextureView) view, textureViewRotation); applyTextureViewRotation((TextureView) view, textureViewRotation);
} }
// SingleTapListener implementation // OnClickListener implementation
@Override @Override
public boolean onSingleTapUp(MotionEvent e) { public void onClick(View view) {
return toggleControllerVisibility(); toggleControllerVisibility();
} }
// StyledPlayerControlView.VisibilityListener implementation // StyledPlayerControlView.VisibilityListener implementation
......
...@@ -27,6 +27,7 @@ import android.os.Handler; ...@@ -27,6 +27,7 @@ import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.Display; import android.view.Display;
import android.view.MotionEvent;
import android.view.Surface; import android.view.Surface;
import android.view.WindowManager; import android.view.WindowManager;
import androidx.annotation.AnyThread; import androidx.annotation.AnyThread;
...@@ -144,11 +145,6 @@ public final class SphericalGLSurfaceView extends GLSurfaceView { ...@@ -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). */ /** Sets whether to use the orientation sensor for rotation (if available). */
public void setUseSensorRotation(boolean useSensorRotation) { public void setUseSensorRotation(boolean useSensorRotation) {
this.useSensorRotation = useSensorRotation; this.useSensorRotation = useSensorRotation;
...@@ -325,6 +321,12 @@ public final class SphericalGLSurfaceView extends GLSurfaceView { ...@@ -325,6 +321,12 @@ public final class SphericalGLSurfaceView extends GLSurfaceView {
Matrix.setRotateM(touchYawMatrix, 0, -scrollOffsetDegrees.x, 0, 1, 0); Matrix.setRotateM(touchYawMatrix, 0, -scrollOffsetDegrees.x, 0, 1, 0);
} }
@Override
@UiThread
public boolean onSingleTapUp(MotionEvent event) {
return performClick();
}
private float calculateFieldOfViewInYDirection(float aspect) { private float calculateFieldOfViewInYDirection(float aspect) {
boolean landscapeMode = aspect > 1; boolean landscapeMode = aspect > 1;
if (landscapeMode) { if (landscapeMode) {
......
...@@ -21,7 +21,6 @@ import android.view.GestureDetector; ...@@ -21,7 +21,6 @@ import android.view.GestureDetector;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import androidx.annotation.BinderThread; import androidx.annotation.BinderThread;
import androidx.annotation.Nullable;
/** /**
* Basic touch input system. * Basic touch input system.
...@@ -47,8 +46,12 @@ import androidx.annotation.Nullable; ...@@ -47,8 +46,12 @@ import androidx.annotation.Nullable;
/* package */ final class TouchTracker extends GestureDetector.SimpleOnGestureListener /* package */ final class TouchTracker extends GestureDetector.SimpleOnGestureListener
implements View.OnTouchListener, OrientationListener.Listener { implements View.OnTouchListener, OrientationListener.Listener {
/* package */ interface Listener { public interface Listener {
void onScrollChange(PointF scrollOffsetDegrees); 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 // Touch input won't change the pitch beyond +/- 45 degrees. This reduces awkward situations
...@@ -65,7 +68,6 @@ import androidx.annotation.Nullable; ...@@ -65,7 +68,6 @@ import androidx.annotation.Nullable;
// The conversion from touch to yaw & pitch requires compensating for device roll. This is set // 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. // on the sensor thread and read on the UI thread.
private volatile float roll; private volatile float roll;
@Nullable private SingleTapListener singleTapListener;
@SuppressWarnings({ @SuppressWarnings({
"nullness:assignment.type.incompatible", "nullness:assignment.type.incompatible",
...@@ -78,10 +80,6 @@ import androidx.annotation.Nullable; ...@@ -78,10 +80,6 @@ import androidx.annotation.Nullable;
roll = SphericalGLSurfaceView.UPRIGHT_ROLL; 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. * Converts ACTION_MOVE events to pitch & yaw events while compensating for device roll.
* *
...@@ -125,10 +123,7 @@ import androidx.annotation.Nullable; ...@@ -125,10 +123,7 @@ import androidx.annotation.Nullable;
@Override @Override
public boolean onSingleTapUp(MotionEvent e) { public boolean onSingleTapUp(MotionEvent e) {
if (singleTapListener != null) { return listener.onSingleTapUp(e);
return singleTapListener.onSingleTapUp(e);
}
return false;
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment