diff --git a/CHANGELOG.md b/CHANGELOG.md index 90281fd5..5bdbcd3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,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 c9e73c5d..0868e6e7 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) @@ -417,6 +418,14 @@ headers={{ Platforms: Android ExoPlayer +#### hideShutterView +Controls whether the ExoPlayer shutter view (black screen while loading) is enabled. + +* **false (default)** - Show shutter view +* **true** - Hide shutter view + +Platforms: Android ExoPlayer + #### id Set the DOM id element so you can use document.getElementById on web platforms. Accepts string values. diff --git a/Video.js b/Video.js index 77b02f0a..60dd3f54 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 85876709..35d56512 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 @@ public final class ExoPlayerView extends FrameLayout { } } + 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 final class ExoPlayerView extends FrameLayout { 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 dc49402d..033329b7 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 @@ class ReactExoplayerView extends FrameLayout implements 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 4d1ec286..fb72f434 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