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>