使用: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); }