Skip to content

Commit ff3bd5b

Browse files
author
Shahen Hovhannisyan
authored
Merge pull request #49 from shahen94/feature/resize-mode
feat(VideoPlayer): introduce resizeMode prop
2 parents 052feeb + 7667424 commit ff3bd5b

10 files changed

Lines changed: 615 additions & 501 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ class App extends Component {
102102
playerWidth={300} // iOS only
103103
playerHeight={500} // iOS only
104104
style={{ backgroundColor: 'black' }}
105+
resizeMode={VideoPlayer.Constants.resizeMode.CONTAIN}
105106
onChange={({ nativeEvent }) => console.log({ nativeEvent })} // get Current time on every second
106107
/>
107108
<Trimmer

android/react-native-video-processing.iml

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,6 @@
6666
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
6767
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
6868
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
69-
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
72-
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
73-
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
74-
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
75-
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
76-
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
7769
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
7870
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
7971
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -82,8 +74,14 @@
8274
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
8375
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
8476
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
85-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
86-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
77+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
80+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
81+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
82+
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
83+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
84+
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
8785
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/jars" />
8886
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.0.1/jars" />
8987
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars" />
@@ -97,13 +95,6 @@
9795
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.yqritc/android-scalablevideoview/1.0.4/jars" />
9896
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/org.webkit/android-jsc/r174650/jars" />
9997
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
100-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
101-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
102-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
103-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
104-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
105-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
106-
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
10798
</content>
10899
<orderEntry type="jdk" jdkName="Android API 23 Platform (1)" jdkType="Android SDK" />
109100
<orderEntry type="sourceFolder" forTests="false" />

android/src/main/java/com/shahenlibrary/VideoPlayer/VideoPlayerView.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public class VideoPlayerView extends ScalableVideoView implements
6262
private RCTEventEmitter eventEmitter;
6363
private String mediaSource;
6464
private boolean mPlay = true;
65+
private ScalableType mResizeMode = ScalableType.FIT_XY;
6566
private String LOG_TAG = "RNVideoProcessing";
6667
private Runnable progressRunnable = null;
6768
private Handler progressUpdateHandler = new Handler();
@@ -71,6 +72,7 @@ public class VideoPlayerView extends ScalableVideoView implements
7172
private int videoEndAt = -1;
7273
private boolean mLooping = false;
7374
private float mVolume = 10f;
75+
private ScalableType resizeMode;
7476

7577

7678
public VideoPlayerView(ThemedReactContext ctx) {
@@ -380,7 +382,7 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto
380382
@Override
381383
public void onPrepared(MediaPlayer mp) {
382384
videoEndAt = mp.getDuration();
383-
setScalableType(ScalableType.FIT_XY);
385+
setScalableType(mResizeMode);
384386
invalidate();
385387

386388
applyProps();
@@ -447,4 +449,18 @@ public boolean canSeekForward() {
447449
public int getAudioSessionId() {
448450
return 0;
449451
}
452+
453+
public void setResizeMode(@Nullable ScalableType resizeMode) {
454+
if (resizeMode == null) {
455+
return;
456+
}
457+
Log.d(LOG_TAG, "setResizeMode: " + resizeMode.toString());
458+
mResizeMode = resizeMode;
459+
460+
if (mMediaPlayer == null) {
461+
return;
462+
}
463+
setScalableType(mResizeMode);
464+
invalidate();
465+
}
450466
}

android/src/main/java/com/shahenlibrary/VideoPlayer/VideoPlayerViewManager.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.facebook.react.uimanager.ThemedReactContext;
3636
import com.shahenlibrary.Events.EventsEnum;
3737
import com.shahenlibrary.Events.Events;
38+
import com.yqritc.scalablevideoview.ScalableType;
3839

3940
import java.util.Map;
4041

@@ -50,6 +51,7 @@ public class VideoPlayerViewManager extends SimpleViewManager<VideoPlayerView> {
5051
private final String SET_PROGRESS_DELAY = "progressEventDelay";
5152
private final String SET_VIDEO_END_TIME = "endTime";
5253
private final String SET_VIDEO_START_TIME = "startTime";
54+
private final String SET_VIDEO_RESIZE_MODE = "resizeMode";
5355

5456
private final int COMMAND_GET_INFO = 1;
5557
private final int COMMAND_TRIM_MEDIA = 2;
@@ -102,6 +104,17 @@ public Map<String, Integer> getCommandsMap() {
102104
);
103105
}
104106

107+
@Nullable
108+
@Override
109+
public Map getExportedViewConstants() {
110+
return MapBuilder.of(
111+
"ScaleNone", Integer.toString(ScalableType.LEFT_TOP.ordinal()),
112+
"ScaleToFill", Integer.toString(ScalableType.FIT_XY.ordinal()),
113+
"ScaleAspectFit", Integer.toString(ScalableType.FIT_CENTER.ordinal()),
114+
"ScaleAspectFill", Integer.toString(ScalableType.CENTER_CROP.ordinal())
115+
);
116+
}
117+
105118
@Override
106119
public void receiveCommand(VideoPlayerView root, int commandId, @Nullable ReadableArray args) {
107120
assert args != null;
@@ -176,4 +189,9 @@ public void setVideoStartTime(final VideoPlayerView player, float startTime) {
176189
Log.d(VideoPlayerViewManager.REACT_PACKAGE, "setVideoStartTime: " + String.valueOf(startTime));
177190
player.setVideoStartAt(mStart);
178191
}
192+
193+
@ReactProp(name = SET_VIDEO_RESIZE_MODE)
194+
public void setResizeMode(final VideoPlayerView player, String resizeModeOrdinalString) {
195+
player.setResizeMode(ScalableType.values()[Integer.parseInt(resizeModeOrdinalString)]);
196+
}
179197
}

0 commit comments

Comments
 (0)