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

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

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

Bundle data= newBundle();

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= newBundle();

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两个方法的回调。在类中添加如下代码

privateIX5WebChromeClient.CustomViewCallback xCustomViewCallback;private FrameLayout video_fullView;//全屏时视频加载view

privateView xCustomView;private com.tencent.smtt.sdk.WebChromeClient xwebchromeclient = newcom.tencent.smtt.sdk.WebChromeClient() {

@Overridepublic void onProgressChanged(com.tencent.smtt.sdk.WebView webView, intpercent) {super.onProgressChanged(webView, percent);if (percent > 40) {

webView.setVisibility(View.VISIBLE);

}

}//拦截全屏调用的方法

@Overridepublic voidonShowCustomView(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);

}

@Overridepublic voidonHideCustomView() {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 booleaninCustomView() {return (xCustomView != null);

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

public voidhideCustomView() {

xwebchromeclient.onHideCustomView();

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

设置x5webview的webchrome,代码如下:

webView.setWebChromeClient(xwebchromeclient);

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

@Overridepublic boolean onKeyDown(intkeyCode, KeyEvent event) {if (inCustomView() && keyCode ==KeyEvent.KEYCODE_BACK) {

hideCustomView();return;

}return super.onKeyDown(keyCode, event);

}

这样就大功告成。

android x5全屏白色,x5webview 自定义全屏界面(示例代码)相关推荐

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

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

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

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

  3. android studio 实用指南,《Android Studio实用指南》4.27 使用演示模式(示例代码)

    本文节选自<Android Studio实用指南> 第4章第27节 作者: 毕小朋 目前本书已上传到百度阅读, 在百度中搜索[Anroid Studio实用指南]便可以找到本书. 什么是演 ...

  4. android vitamio集成教程,集成Vitamio实现万能播放器(示例代码)

    简介: Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染.Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐.到目 ...

  5. 【Android】使用AIDL传递用户自定义类型数据--附完整示例代码

    AIDL对Java类型的支持 AIDL支持Java原始数据类型 AIDL支持String和CharSequence AIDL支持传递其他AIDL接口,但你引用的每个AIDL接口都需要一个import语 ...

  6. android显示地图代码,Android Studio之高德地图实现定位和3D地图显示(示例代码)

    /**** * 讲诉了高德地图定位和3D地图显示 * * 打包和未打包的情况是不一样的,高德配置是可以配置调试版和发布版 **/ public class MainActivity extends A ...

  7. android怎么用代码调图像,浅谈android中图片处理之图形变换特效Matrix(四)(示例代码)...

    今天,我们就来谈下android中图片的变形的特效,在上讲博客中我们谈到android中图片中的色彩特效来实现的.改变它的颜色主要通过ColorMatrix类来实现. 现在今天所讲的图片变形的特效主要 ...

  8. android glide滤镜,Glide 图片形状裁剪 ,滤镜等(示例代码)

    Glide . Picasso . Fresco 已逐渐成为Android主流的图片加载工具(个人见解,使用Volley.ImageLoader.xUtils的大佬们请勿喷~),在多数Android程 ...

  9. android百度api配置,Android Studio 配置使用百度api (附带简单样例)(示例代码)

    还是和同学开发的那个课程作业项目的app, 要使用到百度地图的api 但是,官方文档貌似只有Eclipse的例子,对Android Studio似乎没有说明.  难道,是因为后者是 "Doo ...

  10. unity Android 剪贴板,Unity移动端的复制要这么写示例代码

    前言 Unity官网提供了详尽的文档和丰富的教学视频,昨天跟着视频做了一个简单的3d游戏"roll-a-ball".游戏涉及了许多Unity的基本知识,用来入门很不错. 本文主要给 ...

最新文章

  1. Resnet对应于ImageNet的结构框架
  2. Erlang China 大会 - CN Erlounge III - 发起
  3. mysql5.7.14安装版教程_MySQL5.7.14下载安装图文教程及MySQL数据库语句入门大全
  4. 【Leaflet】鼠标提取坐标
  5. POJ - 2773 Happy 2006(欧几里得+构造)
  6. android 获取sim卡,Android 获取手机SIM卡运营商
  7. 170. Two Sum III - Data structure design【easy】
  8. aio nio aio_AIO的完整形式是什么?
  9. Mr.J-- HTTP学习笔记(三)-- HTTP报文
  10. mysql同时往两个表插数据_MySQL 的两个特殊数据类型属性 unsigned与 zerofill
  11. 戴尔硬盘保护增强套件_戴尔4路机架式服务器R940XA原创图集,一部B级车的价值...
  12. 博客6:磁盘以及创建文件系统的相关知识点
  13. 手机微信html代码,html5 css3手机微信ui界面代码
  14. C#基础与VB基础比较
  15. 怎么在服务器上显示u盘启动,电脑服务器怎么设置U盘启动
  16. 如何用计算机录视频,怎么用电脑录制视频
  17. python爬取bilibili弹幕_爬取Bilibili弹幕并制作词云图
  18. Qt入门教程【Core篇】Layout布局(布局管理器、手动布局)
  19. 【C++学习笔记】函数匹配和函数指针
  20. 何为Robocode

热门文章

  1. HCIA-RS(211-中文题库,2019最新题库)
  2. UCI数据集介绍(论文常用数据集)
  3. 基于javafx+sqlserver的仓库管理系统
  4. 内网通免广告/积分码
  5. 微信APP支付申请配置过程详解
  6. PTA 7-31 掉入陷阱的
  7. CUDA编程:笔记1
  8. 四叶草efi_四叶草启动器Clover EFI bootloader v5.0 r5111最新版
  9. 计算机网络谢希仁第八版 课后答案第七版课后答案
  10. 借助Bilibili Evolved批量下载b站视频