
使用:webview.setWebChromeClient(new MyWebChromeClient());
/**处理观看视频点击全屏、退出全屏操作
*
* 主要通过重写 onShowCustomView 和onHideCustomView,首先通过onShowCustomView中的内容view加入到全屏时的view中
* ,然后再把webview从view中移除.然后在退出全屏时,在onHideCustomView中把webview加回到父view中,并且移除和隐藏全屏的view.
*/
class MyWebChromeClient extends WebChromeClient {
private View myView = null;
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
progressBar1.setVisibility(View.GONE);//加载完网页进度条消失
} else {
progressBar1.setVisibility(View.VISIBLE);//开始加载网页时显示进度条
progressBar1.setProgress(newProgress);//设置进度值
}
}
// 全屏
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
ViewGroup parent = (ViewGroup) webview.getParent();
parent.removeView(webview);
videoView.addView(view);
videoView.setVisibility(View.VISIBLE);
myView = view;
setFullScreen();
}
// 退出全屏
@Override
public void onHideCustomView() {
super.onHideCustomView();
if (myView != null) {
videoView.removeAllViews();
flParent.addView(webview);
videoView.setVisibility(View.GONE);
myView = null;
quitFullScreen();
}
}
}
/**
* 设置全屏
*/
private void setFullScreen() {
// 设置全屏的相关属性,获取当前的屏幕状态,然后设置全屏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
/**
* 退出全屏
*/
private void quitFullScreen() {
// 声明当前屏幕状态的参数并获取
final WindowManager.LayoutParams attrs = this.getWindow().getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().setAttributes(attrs);
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}