Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React原生Android WebView视频全屏(带旋转)_Android_Video_Webview_React Native_Fullscreen - Fatal编程技术网

React原生Android WebView视频全屏(带旋转)

React原生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

我目前已经为RN实现了一个本机模块,以便能够在webview中全屏播放html视频

为此,我只需扩展ReactWebViewManager,将自定义setWebChromeClient设置为React本机Webview

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模块等,我将很快尝试开源这个项目。我会给你最新的信息,期待你的到来!干杯