当前位置: 首页 > news >正文

webView 支持全屏播放

webView 支持全屏播放

直接上代码

public class CustomFullScreenWebViewClient extends WebChromeClient {WebView webView;Context context;/*** 视频全屏参数*/protected static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);private View customView;private FrameLayout fullscreenContainer;private WebChromeClient.CustomViewCallback customViewCallback;int mOriginalSystemUiVisibility;public CustomFullScreenWebViewClient(Context context, WebView webViewParam) {this.webView = webViewParam;this.context = context;}/*** 视频播放相关的方法*/@Overridepublic View getVideoLoadingProgressView() {FrameLayout frameLayout = new FrameLayout(context);frameLayout.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));// 添加慢慢弹出来的动画效果AnimationSet animSet = new AnimationSet(true);AlphaAnimation fadeIn = new AlphaAnimation(0.0f, 1.0f);fadeIn.setDuration(800);animSet.addAnimation(fadeIn);return frameLayout;}@Overridepublic void onShowCustomView(View view, CustomViewCallback callback) {super.onShowCustomView(view, callback);showCustomView(view, callback);}@Overridepublic void onHideCustomView() {hideCustomView();}/*** 视频播放全屏**/private void showCustomView(View view, WebChromeClient.CustomViewCallback callback) {// if a view already exists then immediately terminate the new oneif (customView != null) {callback.onCustomViewHidden();return;}((Activity) context).getWindow().getDecorView();FrameLayout decor = (FrameLayout) ((Activity) context).getWindow().getDecorView();mOriginalSystemUiVisibility = decor.getSystemUiVisibility();fullscreenContainer = new FrameLayoutFullscreenHolder(context);fullscreenContainer.addView(view, COVER_SCREEN_PARAMS);decor.addView(fullscreenContainer, COVER_SCREEN_PARAMS);customView = view;setStatusBarVisibility(false);customViewCallback = callback;// 隐藏系统UIint uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;decor.setSystemUiVisibility(uiOptions);// 添加慢慢弹出来的动画效果AnimationSet animSet = new AnimationSet(true);AlphaAnimation fadeIn = new AlphaAnimation(0.0f, 1.0f);fadeIn.setDuration(800);animSet.addAnimation(fadeIn);view.startAnimation(animSet);}/*** 隐藏视频全屏*/private void hideCustomView() {FrameLayout decor = (FrameLayout) ((Activity) context).getWindow().getDecorView();// 恢复系统UI的可见性decor.setSystemUiVisibility(mOriginalSystemUiVisibility);if (customView == null) {return;}setStatusBarVisibility(true);StatusBarCompat.setStatusBarDarkFont((Activity) context, true); // 状态栏字体颜色decor.removeView(fullscreenContainer);fullscreenContainer = null;customView = null;// 通知全屏播放已结束customViewCallback.onCustomViewHidden();}/*** 全屏容器界面*/static class FrameLayoutFullscreenHolder extends FrameLayout {public FrameLayoutFullscreenHolder(Context ctx) {super(ctx);setBackgroundColor(ctx.getResources().getColor(android.R.color.black));}@Overridepublic boolean onTouchEvent(MotionEvent evt) {return true;}}private void setStatusBarVisibility(boolean visible) {int flag = visible ? 0 : WindowManager.LayoutParams.FLAG_FULLSCREEN;((Activity) context).getWindow().setFlags(flag, WindowManager.LayoutParams.FLAG_FULLSCREEN);}}

http://www.lryc.cn/news/467757.html

相关文章:

  • QGIS之三十二DEM地形导出三维模型gltf
  • 【python爬虫】携程旅行景点游客数据分析与可视化
  • python实现onvif协议下控制摄像头变焦,以及融合人形识别与跟踪控制
  • 【Vue】Vue3.0(十四)接口,泛型和自定义类型的概念及使用
  • 【C++】红黑树万字详解(一文彻底搞懂红黑树的底层逻辑)
  • 开源FluentFTP实操,操控FTP文件
  • 论文解读 | ECCV2024 AutoEval-Video:一个用于评估大型视觉-语言模型在开放式视频问答中的自动基准测试...
  • postgresql14主从同步流复制搭建
  • 企业信息化管理中的数据集成方案:销售出库单对接
  • 3.cpp基本数据类型
  • MCK主机加固与防漏扫的深度解析
  • 《软件估算之原始功能点:精准度量软件规模的关键》
  • 序列化与反序列化
  • 安装nginx实现多ip访问多网站
  • 每日回顾:简单用C写 冒泡排序、快速排序
  • 前端_007_Axios库
  • NAND FLASH 与 SPI FLASH
  • QTCreator打不开双击没反应
  • vue npm run ...时 报错-系统找不到指定的路径
  • 54页可编辑PPT | 大型集团企业数据治理解决方案
  • STM32嵌入式移植GmSSL库
  • 【mod分享】极品飞车10高清模组,,全新道路,全新建筑,高清植被,全新的道路围栏,全新的天空,画质直逼极品飞车20。支持光追
  • 使用U-KAN训练自己的数据集 — 医疗影像分割
  • 游戏盾在防御DDoS与CC攻击中的作用与实现
  • 为什么说红帽认证(RHCE)是网络工程师的万金油证书?
  • 89.【C语言】编译和链接
  • 优秀学员统计
  • 电脑程序变化监控怎么设置?实时监控电脑程序变化的五大方法,手把手教会你!
  • 2.1.3 编码和调制(下)
  • 【网络安全渗透测试入门】之XSS漏洞检测、利用和防御机制XSS游戏(非常详细)收藏这一篇就够了!