webview播放网络视频

来源:互联网 发布:ubuntu 断点续传工具 编辑:程序博客网 时间:2024/05/06 21:27

根据开发需求,需要在app中加载网络上的视频。本来是挺简单的一件事,webview.loadUrl(视频地址),但是在处理全屏的时候总是失败。

下面用代码说话:

//全屏显示的视图对象    private View mFullVideoView;    //一个通知webview退出全屏的回调接口    private WebChromeClient.CustomViewCallback mCustomViewCallback;    private void initWebview() {        mWebView = (WebView) findViewById(R.id.wv_load_web);        final WebSettings settings = mWebView.getSettings();        settings.setCacheMode(WebSettings.LOAD_DEFAULT);        settings.setAppCacheEnabled(true);        settings.setDatabaseEnabled(true);        settings.setDomStorageEnabled(true);        settings.setJavaScriptEnabled(true);        settings.setLoadsImagesAutomatically(true);        mWebView.setWebChromeClient(new WebChromeClient(){            @Override            public void onProgressChanged(WebView view, int newProgress) {                super.onProgressChanged(view, newProgress);            }            @Override            public void onShowCustomView(View view, CustomViewCallback callback) {//                super.onShowCustomView(view, callback);                //改变屏幕方向,SCREEN_ORIENTATION_LANDSCAPE--横排,SCREEN_ORIENTATION_PORTRAIT--竖排                MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);                mWebView.setVisibility(View.GONE);                //判断mFullVideoView是否为空,来判断是否处于全屏状态                if (mFullVideoView != null){                    callback.onCustomViewHidden();                    return;                }                //把全屏显示的视图对象添加到布局                mFrameLayout.addView(view);                mFrameLayout.setVisibility(View.VISIBLE);                //获取全屏显示视图对象                mFullVideoView = view;                //退出全屏的回调接口                mCustomViewCallback = callback;                mActionBar.hide();                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);            }            //关闭全屏显示            @Override            public void onHideCustomView() {//                super.onHideCustomView();                                if (mFullVideoView == null){                    return;                }                //设置屏幕竖排                MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);                //隐藏全局布局                mFrameLayout.setVisibility(View.GONE);                //移除全屏显示的视图对象                mFrameLayout.removeView(mFullVideoView);                mFullVideoView = null;                mCustomViewCallback.onCustomViewHidden();                mWebView.setVisibility(View.VISIBLE);                mCustomViewCallback = null;            }
代码没有问题,能够实现全屏,但是横屏后会重新加载onCreate()方法,使得整个界面又重新加载。解决办法就是在配置文件中的activity中配置

android:configChanges="orientation|screenSize"属性。
这样就可以正常全屏播放视频了。





0 0
原创粉丝点击