React原生Android WebView视频全屏(带旋转)
我目前已经为RN实现了一个本机模块,以便能够在webview中全屏播放html视频 为此,我只需扩展ReactWebViewManager,将自定义setWebChromeClient设置为React本机WebviewReact原生Android WebView视频全屏(带旋转),android,video,webview,react-native,fullscreen,Android,Video,Webview,React Native,Fullscreen,我目前已经为RN实现了一个本机模块,以便能够在webview中全屏播放html视频 为此,我只需扩展ReactWebViewManager,将自定义setWebChromeClient设置为React本机Webview public class InTeachWebviewModule extends ReactWebViewManager { @Override public String getName() { return "RCTInTeachWebvie
public class InTeachWebviewModule extends ReactWebViewManager {
@Override
public String getName() {
return "RCTInTeachWebview";
}
@Override
protected WebView createViewInstance(ThemedReactContext reactContext) {
WebView root = super.createViewInstance(reactContext);
root.setWebChromeClient(new VideoWebChromeClient(reactContext.getCurrentActivity(), root));
return root;
}
}
我有一个简单的定制客户:
public VideoWebChromeClient(Activity activity, WebView webView) {
mWebView = webView;
mActivity = activity;
}
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
if (mVideoView != null) {
callback.onCustomViewHidden();
return;
}
mVideoView = view;
mCustomViewCallback = callback;
view.setBackgroundColor(Color.BLACK);
getRootView().addView(view, FULLSCREEN_LAYOUT_PARAMS);
((View)mWebView.getRootView()).setVisibility(View.GONE);
}
@Override
public void onHideCustomView() {
if (mVideoView == null) {
return;
}
((View)mWebView.getRootView()).setVisibility(View.VISIBLE);
mVideoView.setVisibility(View.GONE);
getRootView().removeView(mVideoView);
mVideoView = null;
mCustomViewCallback.onCustomViewHidden();
}
如果没有屏幕旋转,效果会很好,但只要我调用mActivity.setRequestedOrientation()
就会调用onHideCustomView
。。。调用setRequestedOrientation()
似乎会刷新所有Web视图,即使在我的AndroidManifest中
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/SplashTheme"
android:configChanges="orientation|screenSize">
有没有办法避免刷新?还是以其他方式旋转屏幕?请注意,我的应用程序是人像只除了这种情况 你有没有想过?是的。太好了,我会试一试的。非常感谢。编辑:顺便问一下,我能看到的回购协议中是否有这种实现?对于UI模块等,我将很快尝试开源这个项目。我会给你最新的信息,期待你的到来!干杯