Skip to content

Commit

Permalink
feat(resizeMode): Added resizeMode prop for android
Browse files Browse the repository at this point in the history
  • Loading branch information
Shahen Hovhannisyan committed Mar 20, 2017
1 parent a5674d1 commit a6955ca
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 26 deletions.
25 changes: 8 additions & 17 deletions android/react-native-video-processing.iml
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
Expand All @@ -82,8 +74,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars" />
Expand All @@ -97,13 +95,6 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.yqritc/android-scalablevideoview/1.0.4/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/org.webkit/android-jsc/r174650/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
</content>
<orderEntry type="jdk" jdkName="Android API 23 Platform (1)" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ public class VideoPlayerView extends ScalableVideoView implements
private RCTEventEmitter eventEmitter;
private String mediaSource;
private boolean mPlay = true;
private ScalableType mResizeMode = ScalableType.FIT_XY;
private String LOG_TAG = "RNVideoProcessing";
private Runnable progressRunnable = null;
private Handler progressUpdateHandler = new Handler();
Expand All @@ -71,6 +72,7 @@ public class VideoPlayerView extends ScalableVideoView implements
private int videoEndAt = -1;
private boolean mLooping = false;
private float mVolume = 10f;
private ScalableType resizeMode;


public VideoPlayerView(ThemedReactContext ctx) {
Expand Down Expand Up @@ -380,7 +382,7 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto
@Override
public void onPrepared(MediaPlayer mp) {
videoEndAt = mp.getDuration();
setScalableType(ScalableType.FIT_XY);
setScalableType(mResizeMode);
invalidate();

applyProps();
Expand Down Expand Up @@ -447,4 +449,18 @@ public boolean canSeekForward() {
public int getAudioSessionId() {
return 0;
}

public void setResizeMode(@Nullable ScalableType resizeMode) {
if (resizeMode == null) {
return;
}
Log.d(LOG_TAG, "setResizeMode: " + resizeMode.toString());
mResizeMode = resizeMode;

if (mMediaPlayer == null) {
return;
}
setScalableType(mResizeMode);
invalidate();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.facebook.react.uimanager.ThemedReactContext;
import com.shahenlibrary.Events.EventsEnum;
import com.shahenlibrary.Events.Events;
import com.yqritc.scalablevideoview.ScalableType;

import java.util.Map;

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

private final int COMMAND_GET_INFO = 1;
private final int COMMAND_TRIM_MEDIA = 2;
Expand Down Expand Up @@ -102,6 +104,17 @@ public Map<String, Integer> getCommandsMap() {
);
}

@Nullable
@Override
public Map getExportedViewConstants() {
return MapBuilder.of(
"ScaleNone", Integer.toString(ScalableType.LEFT_TOP.ordinal()),
"ScaleToFill", Integer.toString(ScalableType.FIT_XY.ordinal()),
"ScaleAspectFit", Integer.toString(ScalableType.FIT_CENTER.ordinal()),
"ScaleAspectFill", Integer.toString(ScalableType.CENTER_CROP.ordinal())
);
}

@Override
public void receiveCommand(VideoPlayerView root, int commandId, @Nullable ReadableArray args) {
assert args != null;
Expand Down Expand Up @@ -176,4 +189,9 @@ public void setVideoStartTime(final VideoPlayerView player, float startTime) {
Log.d(VideoPlayerViewManager.REACT_PACKAGE, "setVideoStartTime: " + String.valueOf(startTime));
player.setVideoStartAt(mStart);
}

@ReactProp(name = SET_VIDEO_RESIZE_MODE)
public void setResizeMode(final VideoPlayerView player, String resizeModeOrdinalString) {
player.setResizeMode(ScalableType.values()[Integer.parseInt(resizeModeOrdinalString)]);
}
}
26 changes: 24 additions & 2 deletions lib/VideoPlayer/VideoPlayer.android.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@ import { getActualSource } from '../utils';
const ProcessingUI = UIManager.RNVideoProcessing;

export class VideoPlayer extends Component {
static Constants = {
resizeMode: {
CONTAIN: ProcessingUI.Constants.ScaleAspectFit,
COVER: ProcessingUI.Constants.ScaleAspectFill,
STRETCH: ProcessingUI.Constants.ScaleToFill,
NONE: ProcessingUI.Constants.ScaleNone
}
};
static propTypes = {
...View.propTypes,
play: PropTypes.bool,
Expand All @@ -25,10 +33,11 @@ export class VideoPlayer extends Component {
endTime: PropTypes.number,
startTime: PropTypes.number,
progressEventDelay: PropTypes.number,
source: PropTypes.string.isRequired
source: PropTypes.string.isRequired,
resizeMode: PropTypes.string
};
static defaultProps = {
onChange: noop
onChange: noop,
};

constructor(props) {
Expand Down Expand Up @@ -124,9 +133,21 @@ export class VideoPlayer extends Component {
replay,
volume,
style,
resizeMode,
...props
} = this.props;
const mSource = getActualSource(source);

if (__DEV__) {
const isCompatible = Object
.values(VideoPlayer.Constants.resizeMode)
.includes(resizeMode);

if (!isCompatible) {
console.warn('Wrong resizeMode property, please use VideoPlayer.Constants.resizeMode constants');
}
}

return (
<RNVideoPlayer
style={style}
Expand All @@ -140,6 +161,7 @@ export class VideoPlayer extends Component {
endTime={endTime}
startTime={startTime}
replay={replay}
resizeMode={resizeMode}
volume={volume}
{...props}
/>
Expand Down
13 changes: 7 additions & 6 deletions lib/VideoPlayer/VideoPlayer.ios.js
Original file line number Diff line number Diff line change
Expand Up @@ -175,12 +175,13 @@ export class VideoPlayer extends Component {
...viewProps
} = this.props;

const isCompatible = Object
.values(VideoPlayer.Constants.resizeMode)
.includes(resizeMode);

if (!isCompatible) {
console.warn('Wrong resizeMode property, please use VideoPlayer.Constants.resizeMode constants');
if (__DEV__) {
const isCompatible = Object
.values(VideoPlayer.Constants.resizeMode)
.includes(resizeMode);
if (!isCompatible) {
console.warn('Wrong resizeMode property, please use VideoPlayer.Constants.resizeMode constants');
}
}

const actualSource = getActualSource(source);
Expand Down

0 comments on commit a6955ca

Please sign in to comment.