集成X5WEBVIEW可以选择全屏模式为标准全屏还是x5全屏,而不设置默认为false。

首先看看标准全屏的基本设置,

if (webView.getX5WebViewExtension() != null) {

Bundle data = new Bundle();

data.putBoolean("standardFullScreen", false);// true表示标准全屏,false表示X5全屏;不设置默认false,

data.putBoolean("supportLiteWnd", false);// false:关闭小窗;true:开启小窗;不设置默认true,

data.putInt("DefaultVideoScreen", 1);// 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1

webView.getX5WebViewExtension().invokeMiscMethod("setVideoParams", data);

}

如果使用的是标准全屏那么,显示页面如下:

可以看到典型的 可以横竖屏切换的按钮,锁屏的按钮,缓存和分享的按钮以及视频名标题。 这些内容在一些场景下是可能不希望看到显示的,比如缓存按钮,比如使用模板打开的页面分享出来是模板地址。

因此需要一种标准的全屏模式,而非x5全屏模式。

使用标准全屏模式代码如下:

if (webView.getX5WebViewExtension() != null) {

Bundle data = new Bundle();

data.putBoolean("standardFullScreen", true);// true表示标准全屏,false表示X5全屏;不设置默认false,

data.putBoolean("supportLiteWnd", false);// false:关闭小窗;true:开启小窗;不设置默认true,

data.putInt("DefaultVideoScreen", 1);// 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1

webView.getX5WebViewExtension().invokeMiscMethod("setVideoParams", data);

}

需要在内部处理全屏的交互,在布局中增加代码如下:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/webViewLayout"

android:orientation="vertical">

android:id="@+id/video_fullView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@color/black"

android:visibility="gone">

android:id="@+id/tv_touch"

android:layout_width="150dp"

android:layout_height="45dp"

android:layout_gravity="right"

android:layout_marginTop="20dp"

android:background="@color/transparent" />

首先添加 一个webviewChromeClient,处理onShowCustomView、onHideCustomView两个方法的回调。在类中添加如下代码

private IX5WebChromeClient.CustomViewCallback xCustomViewCallback;

private FrameLayout video_fullView;// 全屏时视频加载view

private View xCustomView;

private com.tencent.smtt.sdk.WebChromeClient xwebchromeclient = new com.tencent.smtt.sdk.WebChromeClient() {

@Override

public void onProgressChanged(com.tencent.smtt.sdk.WebView webView, int percent) {

super.onProgressChanged(webView, percent);

if (percent > 40) {

webView.setVisibility(View.VISIBLE);

}

}

// 拦截全屏调用的方法

@Override

public void onShowCustomView(View view, IX5WebChromeClient.CustomViewCallback callback) {

super.onShowCustomView(view, callback);

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Log.e("my","onShowCustomView----xCustomView:" + xCustomView);

webView.setVisibility(View.INVISIBLE);

// 如果一个视图已经存在,那么立刻终止并新建一个

if (xCustomView != null) {

callback.onCustomViewHidden();

return;

}

view.setVisibility(View.VISIBLE);

video_fullView.addView(view);

xCustomView = view;

xCustomView.setVisibility(View.VISIBLE);

xCustomViewCallback = callback;

video_fullView.setVisibility(View.VISIBLE);

}

@Override

public void onHideCustomView() {

super.onHideCustomView();

Log.e("my","onHideCustomView----xCustomView:" + xCustomView);

if (xCustomView == null){

// 不是全屏播放状态

return;

}

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

xCustomView.setVisibility(View.GONE);

video_fullView.removeView(xCustomView);

xCustomView = null;

video_fullView.setVisibility(View.GONE);

xCustomViewCallback.onCustomViewHidden();

webView.setVisibility(View.VISIBLE);

}

};

/**

* 判断是否是全屏

*

* @return

*/

public boolean inCustomView() {

return (xCustomView != null);

}

/**

* 全屏时按返加键执行退出全屏方法

*/

public void hideCustomView() {

xwebchromeclient.onHideCustomView();

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

设置x5webview的webchrome,代码如下:

webView.setWebChromeClient(xwebchromeclient);

为了处理返回事件,还需要加上如下代码:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (inCustomView() && keyCode == KeyEvent.KEYCODE_BACK) {

hideCustomView();

return ;

}

return super.onKeyDown(keyCode, event);

}

http://www.sujinkeji.cn/

http://news.sujinkeji.cn/

http://item.sujinkeji.cn/

http://www.zsjxbd.cn/

http://news.zsjxbd.cn/

http://item.zsjxbd.cn/

http://www.yesgas.cn/

http://news.yesgas.cn/

http://item.yesgas.cn/

http://www.quickpass.sh.cn/

http://news.quickpass.sh.cn/

http://item.quickpass.sh.cn/

http://www.jspcrm.cn/

http://news.jspcrm.cn/

http://item.jspcrm.cn/

http://www.yjdwpt.cn/

http://news.yjdwpt.cn/

http://item.yjdwpt.cn/

http://www.henanwulian.cn/

http://news.henanwulian.cn/

http://item.henanwulian.cn/

http://www.hhrshh.cn/

http://news.hhrshh.cn/

http://item.hhrshh.cn/

http://www.gpgold.cn/

http://news.gpgold.cn/

http://item.gpgold.cn/

http://www.jingzhuiyou.cn/

http://news.jingzhuiyou.cn/

http://item.jingzhuiyou.cn/

android x5全屏白色,x5webview 自定义全屏界面相关推荐

  1. android x5全屏白色,x5webview 自定义全屏界面 X5webview完美去掉分享功能和缓存功能(2)...

    privateIX5WebChromeClient.CustomViewCallback xCustomViewCallback;private FrameLayout video_fullView; ...

  2. html 锁屏模板,如何自定义锁屏样式

    华为手机怎么换自定义锁屏样式?只有这两个,想换个自己拍的照片 你选择了第二个,然后去设置锁屏壁纸.用你的照片当锁屏壁纸.那样就不会变换了. 怎么自定义锁屏样式,我想应用自己的图片. 手机打开主题有个混 ...

  3. 可以分屏的软件_Screen分屏软件下载|Screen+专业分屏 免费版v1.4.25 下载

    Screen分屏软件是一款显示器工具,使用此工具后用户可以让自己的显示器分出个好多个屏幕,以便直接可以分开多个窗口看程序.由AOC打造,但是明基.LG等非AOC的不同品牌显示器也能使用,用户可以使用多 ...

  4. Android的WebView如何播放视频和全屏视频(腾讯X5内核)

    WebView如何播放视频和全屏视频 前言 1. 接入SDK 2. 具体场景和代码实现 3. 踩坑 3.1 android.system.ErrnoException: chmod failed: E ...

  5. SeciLog 1.3.1 发布,增加了全屏配置,自定义预警等新功能

    2019独角兽企业重金招聘Python工程师标准>>> 看了上次写的产品更新记录,还是三月份的事情,一转眼现在已经到了八月份,中间主要做了ES书的编写工作,同时产品也在一直在完善,现 ...

  6. 【videojs】videojs自定义全屏按钮 | videojs全屏移动端弊端 | 创建videojs菜单

    videojs全屏弊端 在移动端全屏播放9:16的视频效果不好 ,如下图 9:16的视频全屏播放合适竖屏 16:9的视频全屏播放合适横屏 移动端9:16我想要的效果如下图↓,全屏播放时铺满竖屏 需求 ...

  7. video.js 视频截图、录制、自定义全屏,hls、flv、mp4视频播放

    功能 video.js内嵌 截图.录制功能 (图片.视频会下载到本地) 自定义全屏 播放hls.flv.mp4 功能集合成Vue组件 参考 video.js components RecordRTC ...

  8. video全屏操作栏自定义样式js 指定元素全屏视频截图下载

    目录 1. 页面结构 2. 全屏方法 3. 截图方法 4. 样式代码 5. 效果截图 6. 附上完整代码 最近遇到的需求就是重新video标签的控制栏的样式,包括进度条.音量.倍速.全屏等样式,在正常 ...

  9. Android视频播放器实现小窗口和全屏状态切换

    Android视频播放器实现小窗口和全屏状态切换 实在是不好意思,楼下评论的兄弟久等了,这文章一直没写第一是没时间,第二是自己准备也不充足,最近才看了好几个Android视频播放器的开源项目,才对视频 ...

  10. Android全屏播放视频~包括刘海屏、隐藏时间状态栏

    需求是全屏播放视频,刘海屏上面也要播放. 下面是我实现的方式: 首先创建 CustomVideoView 工具类: import android.annotation.TargetApi; impor ...

最新文章

  1. 利用gevent实现异步执行任务
  2. 网络干货,无论是运维还是开发都要知道的网络知识系列之(五)
  3. 几种在Linux下查询外网IP的办法
  4. 作者招募 | 加入PaperWeekly,让你的文字被更多人看到
  5. 列出文件夹下所有文件命令
  6. HDU2546_用01背包做
  7. 一步步通过命令行cl.exe编译Windows程序
  8. LintCode解题目录
  9. matplotlib的基本使用 附python代码详细讲解(基本图的绘制、样式、简单函数的使用)
  10. CentOS 5安装GIT的基本命令
  11. Python 程序报错崩溃后,如何倒回到崩溃的位置?
  12. ubuntu无法登陆mysql_ubuntu11.04mysql报错、无法正常工作、无法登陆mysql
  13. tomcat源码分析(一)- tomcat源码导入IDEA并正常启动
  14. 基于DenseNet和自注意机制融合的脐橙病虫害鉴定(DenseNet加入注意力+自然数据集扩大)
  15. Windows 8 Directx 开发学习笔记(二)建立模型及初始化设备
  16. 程序员应该具备哪些素质
  17. 代码行数越少就越“简单”吗?
  18. R语言| 中介效应分析,Mediation包和BruceR包,循环Process函数
  19. MX160煲机音乐的选择
  20. 部分 VIII. A10 Networks

热门文章

  1. unable to resolve dependency tree
  2. 计算机竖式在线,竖式计算器
  3. Tomcat8安装及配置详解
  4. 登陆模块邮箱用例设计_邮箱注册模块测试用例.doc
  5. 使用 Socket 通信实现 FTP 客户端程序
  6. 1、金融企业信息化建设的必要性
  7. js 打开新窗口 修改 窗口大小
  8. js打开新窗口与页面跳转
  9. c语言做线性代数第六版答案,线性代数求解(C语言):
  10. php解析视频_YY神曲视频PHP解析调用代码