欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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);
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。