From 96c42844fea4e7a1b364b6cfb94d16248246a3a8 Mon Sep 17 00:00:00 2001 From: vadim Date: Wed, 28 Nov 2018 14:56:58 +0200 Subject: [PATCH 1/4] ExoPlayer - Add possibility to hide shutterView --- README.md | 8 ++++++++ Video.js | 1 + .../java/com/brentvatne/exoplayer/ExoPlayerView.java | 10 ++++++++++ .../com/brentvatne/exoplayer/ReactExoplayerView.java | 5 +++++ .../exoplayer/ReactExoplayerViewManager.java | 6 ++++++ 5 files changed, 30 insertions(+) diff --git a/README.md b/README.md index a7c8430e50..103cd47005 100644 --- a/README.md +++ b/README.md @@ -693,6 +693,14 @@ useTextureView can only be set at same time you're setting the source. Platforms: Android ExoPlayer +#### hideShutterView +Controls ExoPlayer shutterView(black screen while loading) visibility + +* **false (default)** - Show shutterView +* **true** - Hide shutterView + +Platforms: Android ExoPlayer + #### volume Adjust the volume. * **1.0 (default)** - Play at full volume diff --git a/Video.js b/Video.js index 77b02f0a9e..60dd3f5453 100644 --- a/Video.js +++ b/Video.js @@ -383,6 +383,7 @@ Video.propTypes = { fullscreenOrientation: PropTypes.oneOf(['all','landscape','portrait']), progressUpdateInterval: PropTypes.number, useTextureView: PropTypes.bool, + hideShutterView: PropTypes.bool, onLoadStart: PropTypes.func, onLoad: PropTypes.func, onBuffer: PropTypes.func, diff --git a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java index 85876709af..35d5651228 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java @@ -39,6 +39,7 @@ public final class ExoPlayerView extends FrameLayout { private ViewGroup.LayoutParams layoutParams; private boolean useTextureView = false; + private boolean hideShutterView = false; public ExoPlayerView(Context context) { this(context, null); @@ -106,6 +107,10 @@ private void updateSurfaceView() { } } + private void updateShutterViewVisibility() { + shutterView.setVisibility(this.hideShutterView ? View.INVISIBLE : View.VISIBLE); + } + /** * Set the {@link SimpleExoPlayer} to use. The {@link SimpleExoPlayer#setTextOutput} and * {@link SimpleExoPlayer#setVideoListener} method of the player will be called and previous @@ -161,6 +166,11 @@ public void setUseTextureView(boolean useTextureView) { updateSurfaceView(); } + public void setHideShutterView(boolean hideShutterView) { + this.hideShutterView = hideShutterView; + updateShutterViewVisibility(); + } + private final Runnable measureAndLayout = new Runnable() { @Override public void run() { diff --git a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java index dc49402da7..033329b71b 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java @@ -131,6 +131,7 @@ class ReactExoplayerView extends FrameLayout implements private float mProgressUpdateInterval = 250.0f; private boolean playInBackground = false; private boolean useTextureView = false; + private boolean hideShutterView = false; private Map requestHeaders; // \ End props @@ -954,6 +955,10 @@ public void setUseTextureView(boolean useTextureView) { exoPlayerView.setUseTextureView(useTextureView); } + public void setHideShutterView(boolean hideShutterView) { + exoPlayerView.setHideShutterView(hideShutterView); + } + public void setBufferConfig(int newMinBufferMs, int newMaxBufferMs, int newBufferForPlaybackMs, int newBufferForPlaybackAfterRebufferMs) { minBufferMs = newMinBufferMs; maxBufferMs = newMaxBufferMs; diff --git a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java index 4d1ec286ec..fb72f434af 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java @@ -51,6 +51,7 @@ public class ReactExoplayerViewManager extends ViewGroupManager Date: Wed, 28 Nov 2018 15:00:27 +0200 Subject: [PATCH 2/4] Add hideShutterView to configurable props --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 103cd47005..65a3418cfd 100644 --- a/README.md +++ b/README.md @@ -282,6 +282,7 @@ var styles = StyleSheet.create({ * [stereoPan](#stereopan) * [textTracks](#texttracks) * [useTextureView](#usetextureview) +* [hideShutterView](#hideshutterview) * [volume](#volume) ### Event props From 2caf713857898f39bc964690e4c76cd92099ae6e Mon Sep 17 00:00:00 2001 From: vadim Date: Fri, 30 Nov 2018 18:42:22 +0200 Subject: [PATCH 3/4] Update changelog and documentation --- CHANGELOG.md | 1 + README.md | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de721463d3..18f920beed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Version 4.0.1 * Add missing files to package.json [#1342](https://github.com/react-native-community/react-native-video/pull/1342) +* Add possibility to remove black screen while video is loading in Exoplayer [#1355](https://github.com/react-native-community/react-native-video/pull/1355) ### Version 4.0.0 * Partial support for timed metadata on Android MediaPlayer [#707](https://github.com/react-native-community/react-native-video/pull/707) diff --git a/README.md b/README.md index 65a3418cfd..4986cd9130 100644 --- a/README.md +++ b/README.md @@ -264,6 +264,7 @@ var styles = StyleSheet.create({ * [fullscreenAutorotate](#fullscreenautorotate) * [fullscreenOrientation](#fullscreenorientation) * [headers](#headers) +* [hideShutterView](#hideshutterview) * [id](#id) * [ignoreSilentSwitch](#ignoresilentswitch) * [muted](#muted) @@ -282,7 +283,6 @@ var styles = StyleSheet.create({ * [stereoPan](#stereopan) * [textTracks](#texttracks) * [useTextureView](#usetextureview) -* [hideShutterView](#hideshutterview) * [volume](#volume) ### Event props @@ -418,6 +418,14 @@ headers={{ Platforms: Android ExoPlayer +#### hideShutterView +Controls ExoPlayer shutterView(black screen while loading) visibility + +* **false (default)** - Show shutterView +* **true** - Hide shutterView + +Platforms: Android ExoPlayer + #### id Set the DOM id element so you can use document.getElementById on web platforms. Accepts string values. @@ -694,14 +702,6 @@ useTextureView can only be set at same time you're setting the source. Platforms: Android ExoPlayer -#### hideShutterView -Controls ExoPlayer shutterView(black screen while loading) visibility - -* **false (default)** - Show shutterView -* **true** - Hide shutterView - -Platforms: Android ExoPlayer - #### volume Adjust the volume. * **1.0 (default)** - Play at full volume From 308aa4aea9650dc9473fc55ce96acdd2c6af7675 Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Wed, 5 Dec 2018 20:05:48 -0800 Subject: [PATCH 4/4] Tweak comment for hideShutterView --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4986cd9130..4d5df1a303 100644 --- a/README.md +++ b/README.md @@ -419,10 +419,10 @@ headers={{ Platforms: Android ExoPlayer #### hideShutterView -Controls ExoPlayer shutterView(black screen while loading) visibility +Controls whether the ExoPlayer shutter view (black screen while loading) is enabled. -* **false (default)** - Show shutterView -* **true** - Hide shutterView +* **false (default)** - Show shutter view +* **true** - Hide shutter view Platforms: Android ExoPlayer