WebView 实现全屏播放视频的示例代码
程序员文章站
2023-12-04 20:40:04
最近要支持一个视频挑战的活动,要求 webview 能全屏播放视频,现在把 android 端实现的方法分享给大家。
要实现全屏需要给 webview 设置 webchr...
最近要支持一个视频挑战的活动,要求 webview 能全屏播放视频,现在把 android 端实现的方法分享给大家。
要实现全屏需要给 webview 设置 webchromeclient 并覆写 onshowcustomview 和 onhidecustomview() 两方法:
webview.setwebchromeclient(new webchromeclient() { @override public void onshowcustomview(view view, customviewcallback callback) { // 此处的 view 就是全屏的视频播放界面,需要把它添加到我们的界面上 } @override public void onhidecustomview() { // 退出全屏播放,我们要把之前添加到界面上的视频播放界面移除 } });
为了实现全屏的效果,需要将视频界面添加我们界面的最上层,有两种方式,一种是添加到 contentview 中,核心代码如下:
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); } });
另一种是添加到 windowmanager 中,完整代码如下:
public class webactivity extends appcompatactivity { ... private windowmanager windowmanager; private view fullscreenview = null; @override protected void onresume() { super.onresume(); // 如果之前处于全屏状态,重新进入后需要再次调用全屏 if (fullscreenview != null) fullscreen(fullscreenview); } @override public void onbackpressed() { // 全屏状态点击返回退出全屏 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) { // 此处的 view 就是全屏的视频播放界面,需要把它添加到我们的界面上 windowmanager.addview(view, new windowmanager.layoutparams(windowmanager.layoutparams.type_application)); // 去除状态栏和导航按钮 fullscreen(view); fullscreenview = view; } @override public void onhidecustomview() { // 退出全屏播放,我们要把之前添加到界面上的视频播放界面移除 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); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。