Android 日常开发(32) WebView视频全屏播放

android Webview播放视频全屏问题 问题 发现在android4.0以上机型上,直接使用Webview加载带视频的html,点击视屏控件的全屏,无法全屏的问题. 各种尝试后,终于解决了问题. 解决 首先在根布局上设置一个 FrameLayout 来放置全屏下的视频内容,遮盖所有的内容. 然后在代码中设置 WebChromeClient webView.setWebChromeClient(new MyWebChromeClien... 阅读详情

前言

之前也做过了,很多遍全屏的控制,但是一直都没有写成笔记去总结。

webview setting

 		this.getSettings().setJavaScriptEnabled(true);
        this.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
        this.getSettings().setDomStorageEnabled(true);//开启 DOM storage API 功能
        this.getSettings().setDatabaseEnabled(true);//开启 database storage API 功能
        this.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//设置缓存
        String cacheDirPath = getContext().getFilesDir().getAbsolutePath() + APP_CACAHE_DIRNAME;
        this.getSettings().setAppCacheEnabled(true);

        //设置  Application Caches 缓存目录
        this.getSettings().setAppCachePath(cacheDirPath);

        this.getSettings().setUseWideViewPort(true);
        this.getSettings().setDisplayZoomControls(true);

        //设置全屏播放
        this.getSettings().setLoadWithOverviewMode(true);
        this.getSettings().setAllowFileAccess(true);
        this.getSettings().setSupportZoom(true);
        this.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        this.getSettings().setPluginState(WebSettings.PluginState.ON);

WebChromeClient重写onShowCustomView和onHideCustomView方法

 View myVideoView;
            View myNormalView;
            CustomViewCallback callback;

            @Override
            public void onShowCustomView(View view, CustomViewCallback callback) {
                fullScreen();
                //将videoview 添加到framelayout
                ViewGroup viewGroup = (ViewGroup) flVideoContent.getParent();
                viewGroup.removeView(flVideoContent);
                viewGroup.addView(view);
                myVideoView = view;
                myNormalView = flVideoContent;
                this.callback = callback;
                super.onShowCustomView(view, callback);
            }

            @Override
            public void onHideCustomView() {
                fullScreen();
                //将videoview 移出 framelayout
                if (callback != null) {
                    callback.onCustomViewHidden();
                    callback = null;
                }
                if (myVideoView != null) {
                    ViewGroup viewGroup = (ViewGroup) myVideoView.getParent();
                    viewGroup.removeView(myVideoView);
                    viewGroup.addView(myNormalView);
                }
                super.onHideCustomView();
            }

重写onConfigurationChanged方法

重写此方法用于解决屏幕反转问题

 @Override
    public void onConfigurationChanged(Configuration config) {
        super.onConfigurationChanged(config);
        switch (config.orientation) {
            case Configuration.ORIENTATION_LANDSCAPE://横屏
                //清空非全屏
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
                //设置全屏
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                break;
            case Configuration.ORIENTATION_PORTRAIT://竖屏
                //清空全屏
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                //设置不全屏
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
                break;
        }
    }
  /**
     * 切换屏幕,使得屏幕旋转
     */
    private void fullScreen() {
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            jyTitleBar.setVisibility(View.GONE);
            Log.i("xxx","横屏");
        } else {
            //解决标题影响绘制问题
            jyTitleBar.setVisibility(View.VISIBLE);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            Log.i("xxx","竖屏");
        }
    }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <TitleBar
        android:id="@+id/jyTitleBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:jy_right_text="保存"
        app:jy_show_right_image="false"
        app:jy_left_image="@drawable/ic_btn_return" />


    <JYWebView
        android:id="@+id/webView"
        android:layout_below="@id/jyTitleBar"
        style="@style/scrollview_style"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <FrameLayout
        android:id="@+id/fl_video_content"
        android:background="@color/c_F5F6FA"
        android:visibility="gone"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

结束语
每天记一记,总会再用到的

android列表当中播放视频以及实现全屏(类似网易,头条) 立即下载

相关推荐

Android WebView播放视频(包括全屏播放)

Android WebView播放视频开发中总结的一些经验,希望同大家分享,这个是相应的Demo,一些经验和注释都在代码中写到。

WebView视屏全屏切换,完美实现

在日常的开发过程中,很多时候需要加h5界面,界面中有视屏播放,但是怎么才能使得webView里面的视屏全屏播放呢?????? ?????? 首先,webView是不能讲视频播放的区域全屏的,所以,需要全屏播放还需要自己试想 大致的步骤有三部: 1、在布局中增加一个空容器,用来全屏播放,首先是隐藏的 播放全屏视频时用--> <FrameLayout androi

puyaCheer的博客 2414

android用webview加载html5网络视频全屏播放

本人自己写的一个android用webview加载html5播放视频,支持全屏播放!以前上传了个版本,那个要积分下载,但修改不了,所以重新上传一下!这个版本加了个全屏双击时会退出全屏!

android webView视频播放全屏设置

首先再AndroidManifest.xml中配置权限 &lt;uses-permission android:name="android.permission.INTERNET" /&gt; &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt; &lt;uses-perm...

only95 2805

Ubuntu22.04+PX4+Gazebo:从零到一构建无人机仿真开发环境

本文详细介绍了在Ubuntu22.04系统下搭建PX4+Gazebo无人机仿真开发环境的完整流程。从基础环境配置、PX4固件安装到Gazebo仿真环境搭建,提供了实用命令和常见问题解决方案,帮助开发者快速构建高效的无人机开发环境。

weixin_29243279的博客 434

智能车竞赛蚂蚁搬家组:NXP-MicroPython与STC单片机协同搬运策略解析

本文深入解析智能车竞赛蚂蚁搬家组中NXP-MicroPython与STC单片机的协同搬运策略。通过硬件选型、通信架构设计、效率优化及实战经验分享,展示了如何利用NXP-MicroPython的实时控制与STC单片机的感知导航优势,实现高效多智能体协同作业,为参赛团队提供实用技术参考。

motor的博客 1078

Android-Studio笔记之webview-——实现播放器全屏功能,一个前端程序员的面试心得

/ 取消Horizontal ScrollBar显示。// 去掉超链接的外边框。// 横屏时,显示视频的view。//如果view 已经存在,则隐藏。// 点击全屏按钮时,调用的方法。//设置自适应屏幕,两者合用。

qd520_1314的博客 1214

sift、surf、orb 特征提取——三维重建

参考文章:[sift、surf、orb 特征提取及最优特征点匹配] 最近刚刚入门三维重建,在SFM算法的代码中注意到了feature_type( feature extraction method)这个参数,想细致了解一下这几种特征提取算法,在这里做一下笔记。 SIFT 简介 SIFT(Scale-Invariant Feature Transform)——尺度不变特征变换,是一种计算机视觉的特征提取算法,用来侦测与描述图像中的局部特征。 实质上,它是在不同的尺度空间上查找关键点(特征点),并计算出关键点的

bb_sy_w的博客 4362

Android编程实现WebView自适应全屏方法小结

本文实例讲述了Android编程实现WebView自适应全屏的方法。分享给大家供大家参考,具体如下: 第一种:settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true);第二种:WebSetting settings = webView.getSettings(); settings.setLayoutAlgo

楠之枫雪的博客 7378

手把手教你用HI3516CV610搭建智能安防摄像头(附完整开发资料)

本文详细介绍了基于海思HI3516CV610 SOC搭建智能安防摄像头的完整开发流程,包括硬件选型、系统架构设计、开发环境搭建、智能分析功能开发及系统调优。通过实战案例,展示了如何利用内置NPU实现人形检测和异常行为分析,并提供了量产测试方案,帮助开发者快速完成智能摄像头项目。

backprop5master的博客 539

2021秋招IC验证面经-ARM中国/中科芯/飞腾/地平线/中兴

中科芯 (央企福利待遇好,但是百分百不解决户口,适合当地人进去躺平。) 现场面试,三个面试官,时间大约40min 首先介绍一下自己,介绍一下项目。所做项目用到了FIFO吗,深度是多少,位宽是多少,仲裁算法是什么? 验证环境中的reference model是自己写的还是本身就有的,仲裁怎么在参考模型中实现,参考模型怎么获取寄存器的值? 怎么配置RTL寄存器,通过平台的寄存器模型进行寄存器配置,寄存器模型里边的方法,写一个寄存器或读一个寄存器怎么实现? 寄存器如何实现前门访问和后门访问,后门访问时

weixin_48014653的博客 6317

Android日常开发系列文章列表

原创 Android日常开发(40)BottomNavigationView 实现底部导航 原创 Android 日常开发 (39)javax.net.ssl.SSLHandshakeException: 原创 Android日常开发(38)旧项目迁移AndroidX 原创 Android日常开发(37)API27引入ExoPlayer2.11.4项目报错处理 原创 Android日常开发(36) Project needs to be converted to androidx.* dependencie

ZPCrobot的博客 632

lammps教程:聚合物压缩,避免“bond atoms missing”

如果使用ms建模,聚合物的链会伸出到盒子外面,在导出data文件后,盒子外面的原子被周期性算法折叠进盒子对面,这就造成了边界附近的bond原子可能被分布到了盒子的两侧。并且,这个data文件不能使用npt系综进行压缩,npt系综必须使用周期性边界,在压缩时,bond原子同样会移动到对面的边界。所以,最好的解决办法是使用一个反射墙墙进行压缩,设置一个反射墙墙既可以实现压缩效果,也可以组织原子跨越box边界移动到对面。解决这个问题的原则只有一个:导出data时确保所有的bond原子没有跨越边界。

lammps_jiayou的博客 3819

非常有用的GitHub链接

平常开发工作中,我经常取Github上搜索项目,Clone下来学习使用,在这个过程中,发现了好多比较好的Github地址,记录下来,分享出去。 image 非常有用的GitHub链接(顺序不分先后): 1. https://github.com/jeasonlzy: OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持RxJava,比...

ddbnfh3092的博客 2256

ResNet改进(50):SKConv和CBAM增强的ResNet模型

动态调整感受野大小- 结合通道和空间注意力模型的核心思想是在ResNet的每个残差块后插入这些注意力模块,使网络能够自适应地关注更重要的特征。模型的核心是类,它在标准ResNet34的基础上:替换了初始卷积层,使用更小的核(3×3)和步长(1)在每个残差块后选择性添加SKConv和CBAM模块# 加载预训练ResNet34# 自定义初始层# 添加注意力机制的残差层通过集成SKConv和CBAM,这个改进的ResNet模型能够更有效地捕捉多尺度特征并关注关键信息区域。

2401_82355416的博客 616

ParaView :在paraview创建渲染视图

ParaView :在paraview创建渲染视图

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1300

个人收藏的一些很有性价比的Github链接

平常开发工作中,我经常取Github上搜索项目,Clone下来学习使用,在这个过程中,发现了好多比较好的Github地址,记录下来,分享出去。

常灿光的博客 8371

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android-Studio笔记之webview-——实现播放器全屏功能,这么香的技术还不快点学起来

** * 设置webView 相关属性 *// 允许访问文件// 去掉超链接的外边框//设置文本编码(根据页面要求设置: utf-8)

ghfgjfg679的博客 2147

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android h5全屏播放video

H5全屏播放,在iOS系统上基本没有什么问题,但是在android系统,却又各种各样的问题。 H5自身对全屏的支持 这个其实不难,只需在video标签加个webkit-playsinline属性即可,这个属性基本上在基于webkit内核的移动端都是没问题的,此全屏非彼全屏,它是在浏览器视窗内的全屏,并不是占居整个手机的全屏,当然我们做web端需要的就是在document的body内的视窗范围的

hunter800421的专栏 5857

android webview全屏视频,Android开发之在Webview中全屏播放视频

【版权申明】非商业目的可自由转载博文地址:https://blog.youkuaiyun.com/ShuSheng0007/article/details/99702252出自:shusheng007概述出于对成本或者其他原因的考虑,在移动开发中有时会采用混合开发的方式,其中一种方式就是让Web页面跑在原生的WebView里面。本文我们来谈论一下如何在webview中全屏播放视频。实现方法本文只谈论如何支持使...

weixin_28909745的博客 1981

解决Android Webview 加载一些网页出现白板现象

Webview 加载一些链接出现白板现象,经过调试onLoadResource 已经正常执行,也就是资源文件都已经成功加载,onReceivedSslError也没有回调到,用自带浏览器和UC都是正常,证明链接本身没有问题,Webview也正常运行,没有出现错误,那就是Webview的配置问题了。 经过N个测试,把 webView.getSettings().setJavaScriptEnab

漫漫求学中的孩儿 2万+

【转】Android实现全屏显示的方法

我们都知道在Android中某些功能的实现往往有两种方法:一种是在xml文件中设置相应属性,另一种是用代码实现。同样Android实现全屏显示也可以通过这两种方法实现: 1、在AndroidManifest.xml的配置文件里面的标签添加属性: android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 2、在Activity的onC

my process的专栏 564
上一篇: 学习:Android性能优化典范
下一篇: Android 日常开发(33) 重新命名工程的文件夹名字导致,项目运行错误
像一只小蜗牛
博客等级 码龄8年 33粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值