public class CustomWebChromeClient extends WebChromeClient {
private View mCustomView;
private CustomViewCallback mCustomViewCallback;
private Activity mActivity;
public CustomWebChromeClient(Activity activity) {
this.mActivity = activity;
}
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
// if a view already exists then immediately terminate the new one
if (mCustomView != null) {
callback.onCustomViewHidden();
return;
}
// get the frame layout that holds the webview
FrameLayout frameLayout = (FrameLayout) mActivity.findViewById(R.id.frame_container);
// get the frame layout that will hold the video view
FrameLayout fullscreenContainer = (FrameLayout) mActivity.findViewById(R.id.fullscreenContainer);
// set the custom view and its callback
mCustomView = view;
mCustomViewCallback = callback;
// hide the webview and show the video view
frameLayout.setVisibility(View.GONE);
fullscreenContainer.setVisibility(View.VISIBLE);
fullscreenContainer.addView(mCustomView);
// set the activity to full screen mode
mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
@Override
public void onHideCustomView() {
// if a view doesn't exist then do nothing
if (mCustomView == null) {
return;
}
// get the frame layout that holds the webview
FrameLayout frameLayout = (FrameLayout) mActivity.findViewById(R.id.frame_container);
// get the frame layout that holds the video view
FrameLayout fullscreenContainer = (FrameLayout) mActivity.findViewById(R.id.fullscreenContainer);
// remove the video view from its container
fullscreenContainer.removeView(mCustomView);
// show the webview and hide the video view
frameLayout.setVisibility(View.VISIBLE);
fullscreenContainer.setVisibility(View.GONE);
// call the custom view callback
mCustomViewCallback.onCustomViewHidden();
// reset the custom view and its callback
mCustomView = null;
mCustomViewCallback = null;
// restore the activity to normal mode
mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}