1 清单文件中的WebView添加下面两行的代码
android:hardwareAccelerated="true"
android:configChanges="orientation|keyboardHidden"
复制代码
2 加入下面的代码,并且调用方法
MyChromeClient chromeClient = new MyChromeClient();
webView.setWebChromeClient(chromeClient);
复制代码
3 WebView外面套一层
<FrameLayout
android:id="@+id/activity_webView_frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/activity_webview_title_container">
<WebView
android:id="@+id/activity_webview_wv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</FrameLayout>
复制代码
3 重写WebView的返回键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (webView != null) {
//关闭视频View
chromeClient.onHideCustomView();
} else {
//WebView返回:goBack()
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
复制代码
源码
private View myView = null;
private WebChromeClient.CustomViewCallback myCallBack = null;
public class MyChromeClient extends WebChromeClient {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
if (myView != null) {
callback.onCustomViewHidden();
return;
}
webViewFrameLayout.removeView(webView);
webViewFrameLayout.addView(view);
myView = view;
myCallBack = callback;
}
@Override
public void onHideCustomView() {
if (myView == null) {
return;
}
webViewFrameLayout.removeView(myView);
myView = null;
webViewFrameLayout.addView(webView);
myCallBack.onCustomViewHidden();
}
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
// TODO Auto-generated method stub
return super.onConsoleMessage(consoleMessage);
}
}
复制代码