基于TBS集成X5内核的WebView

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/KaraShok/article/details/88828707

腾讯浏览服务TBS官网

主要类:

  1. TbsUtils
  2. X5WebView
  3. JavaScriptFunction

作用:1、初始化X5内核;2、基于X5封装的WebVIew;3、用于与JS交互的接口基类。

集成

1、去官网下载最新的SDK。

注意:
在这里插入图片描述
两者无差别,建议下载第一个,因为第二个好像挺更了。
2、将解压后的文件夹中的jar包导入到项目中并进行集成
3、将demo中的so文件也放入项目中,放到 armeabi 目录下,
并在相应的 module 的 build.gradle 文件的 defaultConfig 中加入如下代码:

ndk {
	abiFilters "armeabi"
 }

如果项目是多 module 的建议在主的 app 的 build.gradle 文件的 defaultConfig 也加入同样的代码。因为如果不加的话,有大概率 so 不会加载。
4、对X5WebVIew进行配置,这与原生WebView配置一样,不在叙述,但要注意所用的东西要来自于 com.tencent.smtt.sdk 注意导包问题
5、权限配置:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <!-- 硬件加速对X5视频播放非常重要,建议开启(如果有网页视频播放的话建议开启) -->
    <uses-permission android:name="android.permission.GET_TASKS" />

6、Activity 的相应配置
(1)、主题的配置:禁止使用透明,对于视频的全局播放样式会更好(** !!#ff9900 非必须!! **)

<style name="TbsThem" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:windowIsTranslucent">false</item>
    </style>

(2)、属性的相应配置

// 开启硬件加速
android:hardwareAccelerated="true"
// 享受页面视频的完整播放体验
android:configChanges="orientation|screenSize|keyboardHidden"
// 避免输入法界面弹出后遮挡输入光标的问题
android:windowSoftInputMode="stateHidden|adjustResize"

(3)、代码中

// 网页中的视频,上屏幕的时候,可能出现闪烁的情况,需要如下设置:Activity在onCreate时需要设置:
getWindow().setFormat(PixelFormat.TRANSLUCENT);

7、缓存配置

// 注意一定要放在WebView加载后,不然只会管理内核的缓存
CookieSyncManager.createInstance(getApplication());
CookieSyncManager.getInstance().sync();

主要类的主要方法介绍

1、TbsUtils

// 初始化TBS
public final static void init(Application application)
// 初始化X5内核(必须)
private final static void initX5Environment(final Application application)
// 初始化监听(非必须)
private final static void initTbsListener()

2、X5WebView

/**
     * 设置播放模式
     * @param x5Full    true表示标准全屏,false表示X5全屏;不设置默认false
     * @param lite      false:关闭小窗;true:开启小窗;不设置默认true
     * @param startType 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1
     */
    public final void setVideoScreenStyleFunc(boolean x5Full, boolean lite, int startType)
// 回退
public final boolean goToBack()

3、BaseTbsWebViewActivity

/**
     * 初始化X5WebView
     * @param frameLayout 父容器
     * @param url 加载地址
     * @param jsFun JS回调
     * @param jsParams JS参数名
     */
    protected final void initX5WebView(FrameLayout frameLayout, String url,JavaScriptFunction jsFun, String jsParams)
/**
     * 设置加载url
     * @param url
     */
    public final void x5WebViewLoadUrl(String url)
/**
     * 设置WebViewClient
     * @param client
     */
    protected final void setWebViweClient(WebViewClient client)
/**
     * 设置WebChromeClient
     * @param client
     */
    protected final void setWebChromeClient(WebChromeClient client)
/**
     * @param x5Full    true表示标准全屏,false表示X5全屏;不设置默认false
     * @param lite      false:关闭小窗;true:开启小窗;不设置默认true
     * @param startType 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1
     */
    public final void setVideoScreenStyleFunc(boolean x5Full, boolean lite, int startType)
// 已判断WebView是否回退的Activity finish方法
public void finish() 

注意

1、如果TBS是集成在子 module 中,注意不要在其他 module 中直接调用 TBS 库中的方法,因为涉及到WebVIew内核容易报错,而且也不利于管理,建议在封装一层。
2、如果项目分多个 module 记得一定要在 app 的下面加上 加载 ndk 的代码,不然内核会加载失败。
3、建议WebView用动态的方式进行加载,因为它极耗资源,生命周期管理也要注意。

最后

项目地址
https://github.com/KaraShok/MVVM-Android 中的 module_open_file 中,不要忘记给个 star

展开阅读全文

没有更多推荐了,返回首页