WebView Realization Full Screen Play Video Sample Code
- 2021-10-16 02:45:27
- OfStack
Recently, I want to support a video challenge activity, which requires WebView to play video in full screen. Now I will share the method implemented by Android.
To achieve full screen, you need to set WebChromeClient to WebView and override onShowCustomView and onHideCustomView ():
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
// Here view It is a full-screen video playback interface, which needs to be added to our interface
}
@Override
public void onHideCustomView() {
// To exit full screen playback, we need to remove the video playback interface added to the interface before
}
});
In order to achieve the full-screen effect, we need to add the video interface to the top layer of our interface. There are two ways, one is to add it to ContentView, and the core code is as follows:
contentParentView = findViewById(android.R.id.content);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
contentParentView.addView(view);
}
@Override
public void onHideCustomView() {
contentParentView.removeView(fullScreenView);
}
});
The other is added to WindowManager, and the complete code is as follows:
public class WebActivity extends AppCompatActivity {
...
private WindowManager windowManager;
private View fullScreenView = null;
@Override
protected void onResume() {
super.onResume();
// If you were in full screen before, you need to call full screen again after re-entering
if (fullScreenView != null) fullScreen(fullScreenView);
}
@Override
public void onBackPressed() {
// Full screen status click back to exit full screen
if (fullScreenView != null) {
windowManager.removeViewImmediate(fullScreenView);
fullScreenView = null;
} else {
super.onBackPressed();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
windowManager = getWindowManager();
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
// Here view It is a full-screen video playback interface, which needs to be added to our interface
windowManager.addView(view, new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_APPLICATION));
// Remove status bar and navigation buttons
fullScreen(view);
fullScreenView = view;
}
@Override
public void onHideCustomView() {
// To exit full screen playback, we need to remove the video playback interface added to the interface before
windowManager.removeViewImmediate(fullScreenView);
fullScreenView = null;
}
});
}
private void fullScreen(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
} else {
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
}
}