Android:webView加載h5網頁視頻,播放不了,以及橫屏全屏的問題和實現自定義加載進度條的效果


1、webView加載h5網頁視頻,播放不了,android3.0之后要在menifest添加硬件加速的屬性 android:hardwareAccelerated="true"。

2、接着是視屏播放實現橫屏全屏效果,以及自定義加載提示和播放進度條。

public class myWebChromeClient extends WebChromeClient {

        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle(view, title);
            LogUtils.i(NewsDetailsActivity.class, "title:" + title);
            if (getIntent().getStringExtra("ifIsFromFocus") != null) {
                if (ifFirstWebPage == 0) {
                    ifFirstWebPage++;
                    pre_title = title;
                }
                shareTitle = title;
                tvTitle.setText(title);
            }
        }

        private View xprogressvideo;

        // 播放網絡視頻時全屏會被調用的方法
        @Override
        public void onShowCustomView(View view, CustomViewCallback callback) {
            rlTopTitle = (RelativeLayout) findViewById(R.id.rlTopTitle);
            rlTopTitle.setVisibility(View.GONE);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            mWebView.setVisibility(View.INVISIBLE);
            // 如果一個視圖已經存在,那么立刻終止並新建一個
            if (xCustomView != null) {
                callback.onCustomViewHidden();
                return;
            }
            video_fullView.addView(view);
            xCustomView = view;
            xCustomViewCallback = callback;
            video_fullView.setVisibility(View.VISIBLE);
        }

        // 視頻播放退出全屏會被調用的
        @Override
        public void onHideCustomView() {
            if (xCustomView == null)// 不是全屏播放狀態
                return;
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            xCustomView.setVisibility(View.GONE);
            video_fullView.removeView(xCustomView);
            xCustomView = null;
            video_fullView.setVisibility(View.GONE);
            xCustomViewCallback.onCustomViewHidden();
            mWebView.setVisibility(View.VISIBLE);
            rlTopTitle = (RelativeLayout) findViewById(R.id.rlTopTitle);
            rlTopTitle.setVisibility(View.VISIBLE);
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
            mWebView.getSettings().setBuiltInZoomControls(true);
        }

        // 視頻加載時進程loading
        @Override
        public View getVideoLoadingProgressView() {
            if (xprogressvideo == null) {
                LayoutInflater inflater = LayoutInflater
                        .from(NewsDetailsActivity.this);
                xprogressvideo = inflater.inflate(
                        R.layout.video_loading_progress, null);
            }
            return xprogressvideo;
        }

    }

 

xwebchromeclient = new myWebChromeClient();
            mWebView.setWebChromeClient(xwebchromeclient);

進度加載提示和播放進度條的布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/progress_indicator"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerInParent="true"
 android:orientation="vertical" >
 <ProgressBar
 android:id="@android:id/progress"
 style="?android:attr/progressBarStyleLarge"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center" />
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:paddingTop="5dip"
 android:text="正在玩命加載視頻中。。。"
android:textColor="?android:attr/textColorPrimary"
 android:textSize="14sp" />
</LinearLayout>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM