mirror of
https://github.com/androidx/media.git
synced 2025-05-10 00:59:51 +08:00
Allow disabling hide on touch for SimpleExoPlayerView
Issue: #2501 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=154036726
This commit is contained in:
parent
e1c82fbb1a
commit
4c0b539054
@ -74,12 +74,18 @@ import java.util.List;
|
|||||||
* <li>Default: {@code null}</li>
|
* <li>Default: {@code null}</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* </li>
|
* </li>
|
||||||
* <li><b>{@code use_controller}</b> - Whether playback controls are displayed.
|
* <li><b>{@code use_controller}</b> - Whether the playback controls can be shown.
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>Corresponding method: {@link #setUseController(boolean)}</li>
|
* <li>Corresponding method: {@link #setUseController(boolean)}</li>
|
||||||
* <li>Default: {@code true}</li>
|
* <li>Default: {@code true}</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* </li>
|
* </li>
|
||||||
|
* <li><b>{@code hide_on_touch}</b> - Whether the playback controls are hidden by touch events.
|
||||||
|
* <ul>
|
||||||
|
* <li>Corresponding method: {@link #setControllerHideOnTouch(boolean)}</li>
|
||||||
|
* <li>Default: {@code true}</li>
|
||||||
|
* </ul>
|
||||||
|
* </li>
|
||||||
* <li><b>{@code resize_mode}</b> - Controls how video and album art is resized within the view.
|
* <li><b>{@code resize_mode}</b> - Controls how video and album art is resized within the view.
|
||||||
* Valid values are {@code fit}, {@code fixed_width}, {@code fixed_height} and {@code fill}.
|
* Valid values are {@code fit}, {@code fixed_width}, {@code fixed_height} and {@code fill}.
|
||||||
* <ul>
|
* <ul>
|
||||||
@ -190,6 +196,7 @@ public final class SimpleExoPlayerView extends FrameLayout {
|
|||||||
private boolean useArtwork;
|
private boolean useArtwork;
|
||||||
private Bitmap defaultArtwork;
|
private Bitmap defaultArtwork;
|
||||||
private int controllerShowTimeoutMs;
|
private int controllerShowTimeoutMs;
|
||||||
|
private boolean controllerHideOnTouch;
|
||||||
|
|
||||||
public SimpleExoPlayerView(Context context) {
|
public SimpleExoPlayerView(Context context) {
|
||||||
this(context, null);
|
this(context, null);
|
||||||
@ -228,6 +235,7 @@ public final class SimpleExoPlayerView extends FrameLayout {
|
|||||||
int surfaceType = SURFACE_TYPE_SURFACE_VIEW;
|
int surfaceType = SURFACE_TYPE_SURFACE_VIEW;
|
||||||
int resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FIT;
|
int resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FIT;
|
||||||
int controllerShowTimeoutMs = PlaybackControlView.DEFAULT_SHOW_TIMEOUT_MS;
|
int controllerShowTimeoutMs = PlaybackControlView.DEFAULT_SHOW_TIMEOUT_MS;
|
||||||
|
boolean controllerHideOnTouch = true;
|
||||||
if (attrs != null) {
|
if (attrs != null) {
|
||||||
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
|
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
|
||||||
R.styleable.SimpleExoPlayerView, 0, 0);
|
R.styleable.SimpleExoPlayerView, 0, 0);
|
||||||
@ -242,6 +250,8 @@ public final class SimpleExoPlayerView extends FrameLayout {
|
|||||||
resizeMode = a.getInt(R.styleable.SimpleExoPlayerView_resize_mode, resizeMode);
|
resizeMode = a.getInt(R.styleable.SimpleExoPlayerView_resize_mode, resizeMode);
|
||||||
controllerShowTimeoutMs = a.getInt(R.styleable.SimpleExoPlayerView_show_timeout,
|
controllerShowTimeoutMs = a.getInt(R.styleable.SimpleExoPlayerView_show_timeout,
|
||||||
controllerShowTimeoutMs);
|
controllerShowTimeoutMs);
|
||||||
|
controllerHideOnTouch = a.getBoolean(R.styleable.SimpleExoPlayerView_hide_on_touch,
|
||||||
|
controllerHideOnTouch);
|
||||||
} finally {
|
} finally {
|
||||||
a.recycle();
|
a.recycle();
|
||||||
}
|
}
|
||||||
@ -304,6 +314,7 @@ public final class SimpleExoPlayerView extends FrameLayout {
|
|||||||
this.controller = null;
|
this.controller = null;
|
||||||
}
|
}
|
||||||
this.controllerShowTimeoutMs = controller != null ? controllerShowTimeoutMs : 0;
|
this.controllerShowTimeoutMs = controller != null ? controllerShowTimeoutMs : 0;
|
||||||
|
this.controllerHideOnTouch = controllerHideOnTouch;
|
||||||
this.useController = useController && controller != null;
|
this.useController = useController && controller != null;
|
||||||
hideController();
|
hideController();
|
||||||
}
|
}
|
||||||
@ -407,17 +418,17 @@ public final class SimpleExoPlayerView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether the playback controls are enabled.
|
* Returns whether the playback controls can be shown.
|
||||||
*/
|
*/
|
||||||
public boolean getUseController() {
|
public boolean getUseController() {
|
||||||
return useController;
|
return useController;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether playback controls are enabled. If set to {@code false} the playback controls are
|
* Sets whether the playback controls can be shown. If set to {@code false} the playback controls
|
||||||
* never visible and are disconnected from the player.
|
* are never visible and are disconnected from the player.
|
||||||
*
|
*
|
||||||
* @param useController Whether playback controls should be enabled.
|
* @param useController Whether the playback controls can be shown.
|
||||||
*/
|
*/
|
||||||
public void setUseController(boolean useController) {
|
public void setUseController(boolean useController) {
|
||||||
Assertions.checkState(!useController || controller != null);
|
Assertions.checkState(!useController || controller != null);
|
||||||
@ -486,6 +497,23 @@ public final class SimpleExoPlayerView extends FrameLayout {
|
|||||||
this.controllerShowTimeoutMs = controllerShowTimeoutMs;
|
this.controllerShowTimeoutMs = controllerShowTimeoutMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the playback controls are hidden by touch events.
|
||||||
|
*/
|
||||||
|
public boolean getControllerHideOnTouch() {
|
||||||
|
return controllerHideOnTouch;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether the playback controls are hidden by touch events.
|
||||||
|
*
|
||||||
|
* @param controllerHideOnTouch Whether the playback controls are hidden by touch events.
|
||||||
|
*/
|
||||||
|
public void setControllerHideOnTouch(boolean controllerHideOnTouch) {
|
||||||
|
Assertions.checkState(controller != null);
|
||||||
|
this.controllerHideOnTouch = controllerHideOnTouch;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the {@link PlaybackControlView.VisibilityListener}.
|
* Set the {@link PlaybackControlView.VisibilityListener}.
|
||||||
*
|
*
|
||||||
@ -573,10 +601,10 @@ public final class SimpleExoPlayerView extends FrameLayout {
|
|||||||
if (!useController || player == null || ev.getActionMasked() != MotionEvent.ACTION_DOWN) {
|
if (!useController || player == null || ev.getActionMasked() != MotionEvent.ACTION_DOWN) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (controller.isVisible()) {
|
if (!controller.isVisible()) {
|
||||||
controller.hide();
|
|
||||||
} else {
|
|
||||||
maybeShowController(true);
|
maybeShowController(true);
|
||||||
|
} else if (controllerHideOnTouch) {
|
||||||
|
controller.hide();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -39,11 +39,12 @@
|
|||||||
<attr name="use_artwork" format="boolean"/>
|
<attr name="use_artwork" format="boolean"/>
|
||||||
<attr name="default_artwork" format="reference"/>
|
<attr name="default_artwork" format="reference"/>
|
||||||
<attr name="use_controller" format="boolean"/>
|
<attr name="use_controller" format="boolean"/>
|
||||||
|
<attr name="hide_on_touch" format="boolean"/>
|
||||||
|
<attr name="resize_mode"/>
|
||||||
<attr name="surface_type"/>
|
<attr name="surface_type"/>
|
||||||
<attr name="show_timeout"/>
|
<attr name="show_timeout"/>
|
||||||
<attr name="rewind_increment"/>
|
<attr name="rewind_increment"/>
|
||||||
<attr name="fastforward_increment"/>
|
<attr name="fastforward_increment"/>
|
||||||
<attr name="resize_mode"/>
|
|
||||||
<attr name="player_layout_id"/>
|
<attr name="player_layout_id"/>
|
||||||
<attr name="controller_layout_id"/>
|
<attr name="controller_layout_id"/>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user