文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android WebView H5视频播放实现全屏播放功能、全屏按钮不显示、灰显、点击无效问题解决方案

2023-08-22 09:49

关注

Android WebView H5视频播放实现全屏播放功能、全屏按钮不显示、灰显、点击无效问题解决方案

一、官方介绍

HTML5 video supportHTML5 Video support In order to support inline HTML5 video in your application, you need to have hardware acceleration turned on, and set a WebChromeClient. For full screen support, implementations of onShowCustomView(View, WebChromeClient.CustomViewCallback) and onHideCustomView() are required, getVideoLoadingProgressView() is optional.
  1. 打开硬件加速(3.0以上版本支持)
  2. set一个WebChromClient,实现onShowCustomView() 方法和onHideCustomView()方法
  3. 全屏支持

二、实现解决

  1. 打开硬件加速
<activity    android:name=".uicomponent.WebViewActivity"    android:configChanges="orientation|screenSize|keyboardHidden" //防止h5重新加载    android:hardwareAccelerated="true" //硬件加速    android:screenOrientation="portrait" //当我们切换横竖屏的时候,屏幕的内容始终以竖屏显示,而不会根据屏幕的方向来显示内容    android:theme="@style/AppTheme.NoActionBar" />
  1. WebView中设置WebChromClient实现接口onShowCustomView() 方法和onHideCustomView()方法, 实现后即显示全屏播放按钮,但是点击无反应,需要实现全屏支持。

  2. 全屏支持实现:WebView在点击全屏按钮后调用onShowCustomView方法,而全屏的视频会在其参数view中进行渲染。我们需要在Activity中写一个viewRoot,在onShowCustomView触发后,将其view传入viewRoot,且使APP横屏,达到全屏显示。

@SuppressLint("StaticFieldLeak")private var mCustomView: View? = null //全屏渲染视频的Viewprivate var webRoot: FrameLayout? = null// 显示全屏视频的布局private var mCustomViewCallback: CustomViewCallback? = null@SuppressLint("SourceLockedOrientationActivity")override fun onShowCustomView(view: View?, callback: CustomViewCallback?) {    super.onShowCustomView(view, callback)    try {        if (mCustomView != null) { //当上一个view存在时,隐藏全屏            callback?.onCustomViewHidden()            return        }        mCustomView = view        webRoot?.addView(mCustomView)        mCustomViewCallback = callback        webView?.visibility = View.GONE        val actionBar = supportActionBar        actionBar?.hide()        requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE    } catch (e: Exception) {        e.printStackTrace()    }}@SuppressLint("SourceLockedOrientationActivity")override fun onHideCustomView() {    try {        webView?.visibility = View.VISIBLE        val actionBar = supportActionBar        actionBar?.show()        if (mCustomView == null) { //当上一个view不存在时,不处理            return        }        mCustomView?.visibility = View.GONE        webRoot?.removeView(mCustomView)        mCustomViewCallback?.onCustomViewHidden()        mCustomView = null        requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT    } catch (e: Exception) {        e.printStackTrace()    }    super.onHideCustomView()} override fun onProgressChanged(view: WebView?, newProgress: Int) {    super.onProgressChanged(view, newProgress)    progressBar?.progress = newProgress}

xml

android:id="@+id/web_root"    app:layout_constraintBottom_toTopOf="@id/v_bottom"    app:layout_constraintTop_toBottomOf="@id/v_top"    android:layout_width="match_parent"    android:layout_height="0dp">   android:id="@+id/webview"         android:layout_width="match_parent"         android:layout_height="match_parent" />       android:id="@+id/progress_bar"        style="?android:progressBarStyleHorizontal"        android:layout_width="match_parent"        android:layout_height="1.5dp"        android:max="100"        android:progressDrawable="@drawable/webview_progress_bar_style" />

三、写在最后

此文章为个人开发时记录,有时时间有限,无法深入研究,若看到此文章后有其他见解或解决方式,欢迎留言交流👇👇👇

————————————————
版权声明:转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/weixin_44158429/article/details/130217214

来源地址:https://blog.csdn.net/weixin_44158429/article/details/130217214

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯