工作中经常涉及H5网页的加载工作,最多使用的就是安卓系统控件WebView,但是当网页内容比较多的时候,需要等待很久才能加载完,加载完后用户才能看到网页中的内容,这样用户需要等很久,体验很差。

那能不能边加载边显示呢,通过搜索发现腾讯X5WebView可以实现,相对体验要好很多,况且手Q、微信、QQ浏览器使用的该插件,故值得一试。

步骤如下:

一、下载jar包及so文件分别放到libs和jniLibs文件夹

二、添加权限

<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" />

三、Application中初始化

 private void initX5WebView() {//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {@Overridepublic void onViewInitFinished(boolean arg0) {//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。Log.d("app", " onViewInitFinished is " + arg0);}@Overridepublic void onCoreInitFinished() {}};//x5内核初始化接口QbSdk.initX5Environment(getApplicationContext(), cb);}

四、使用自定义X5WebView继承腾讯包下WebView

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebSettings.LayoutAlgorithm;
import com.tencent.smtt.sdk.WebView;
import com.tencent.smtt.sdk.WebViewClient;public class X5WebView extends WebView {private WebViewClient client = new WebViewClient() {/*** 防止加载网页时调起系统浏览器*/public boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}};@SuppressLint("SetJavaScriptEnabled")public X5WebView(Context arg0, AttributeSet arg1) {super(arg0, arg1);this.setWebViewClient(client);// this.setWebChromeClient(chromeClient);// WebStorage webStorage = WebStorage.getInstance();initWebViewSettings();this.getView().setClickable(true);}private void initWebViewSettings() {WebSettings webSetting = this.getSettings();webSetting.setJavaScriptEnabled(true);webSetting.setJavaScriptCanOpenWindowsAutomatically(true);webSetting.setAllowFileAccess(true);webSetting.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);webSetting.setSupportZoom(true);webSetting.setBuiltInZoomControls(true);webSetting.setUseWideViewPort(true);webSetting.setSupportMultipleWindows(true);// webSetting.setLoadWithOverviewMode(true);webSetting.setAppCacheEnabled(true);// webSetting.setDatabaseEnabled(true);webSetting.setDomStorageEnabled(true);webSetting.setGeolocationEnabled(true);webSetting.setAppCacheMaxSize(Long.MAX_VALUE);// webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);// webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);// this.getSettingsExtension().setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);//extension// settings 的设计}public X5WebView(Context arg0) {super(arg0);setBackgroundColor(85621);}}

五、Activity中使用

/*** @author geqipeng* @date 2018/1/18*/public class WebViewTestActivity extends Activity {private static final String mHomeUrl = "http://app.html5.qq.com/navi/index";private X5WebView mX5WebView;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_webview_test);initHardwareAccelerate();initView();}/*** 启用硬件加速*/private void initHardwareAccelerate() {try {if (Integer.parseInt(android.os.Build.VERSION.SDK) >= 11) {getWindow().setFlags(android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);}} catch (Exception e) {}}private void initView() {mX5WebView = findViewById(R.id.x5_webview);mX5WebView.loadUrl(mHomeUrl);}/*** 返回键监听* @param keyCode* @param event* @return*/@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {if (mX5WebView != null && mX5WebView.canGoBack()) {mX5WebView.goBack();return true;} else {return super.onKeyDown(keyCode, event);}}return super.onKeyDown(keyCode, event);}@Overrideprotected void onDestroy() {//释放资源if (mX5WebView != null)mX5WebView.destroy();super.onDestroy();}
}

六、Xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><net.edaibu.testapplication.activity.webview.X5WebViewandroid:id="@+id/x5_webview"android:layout_width="match_parent"android:layout_height="match_parent"/></RelativeLayout>

效果图:


腾讯X5WebView接入文档

https://x5.tencent.com/tbs/guide/sdkInit.html点击打开链接

腾讯X5WebView集成使用相关推荐

  1. 微信小程序开发:腾讯地图集成详细步骤

    前言 在腾讯生态开发过程中,包括在微信小程序开发的时候,避免不了使用腾讯送的腾讯大礼包,从微信支付到腾讯地图,一条龙的腾讯大礼包,不得不说鹅厂的实力是无可比拟的.但是话又说回来了,鹅厂的官方 API ...

  2. 微信小程序开发:腾讯地图集成步骤(旧题新说)

    在腾讯生态开发过程中,包括在微信小程序开发的时候,避免不了使用腾讯送的腾讯大礼包,从微信支付到腾讯地图,一条龙的腾讯大礼包,不得不说鹅厂的实力是无可比拟的. 但是话又说回来了,鹅厂的官方API真是不敢 ...

  3. 腾讯Bugly 集成( Android SDK)

    年前交付的一个项目,年后客户反馈有的手机运行APP后崩溃,其他手机运行正常.项目中在打开webview加载一个H5页面时出现崩溃,客户反映出现bug的手机是android8.2.0系统的.查过相关资料 ...

  4. 腾讯linux集成化界面,腾讯TOS系统今日开启内测:界面扁平化风格

    2015年1月15日,腾讯ROM Tencent OS(以下简称"TOS")曾启动内测招募活动,最终从6万报名者中选出200名内测体验官.而即日起,腾讯TOS正式启动内测活动,腾讯 ...

  5. 腾讯Bugly集成(简单好用!)

    1先在Bugly上创建一个app来获取appid https://bugly.qq.com/v2/products/crash-reporting 2 在Module的build.gradle文件中 ...

  6. 安卓知识体系搭建(持续更新)

    Java基础 日期操作类 [Android]DecimalFormat简单使用 Java语言编程规范--注释规范 Java内存分配之堆.栈和常量池 Java泛型详解 深入浅出Java中的增强 for ...

  7. 微信小程序 -- 原生JS集成腾讯IM实时聊天/实时音视频(踩坑及心得)

    原生JS集成腾讯IM实时聊天/实时音视频对话功能 一.腾讯IM集成 前期准备 实例创建及初始化 IM登录 收发消息 二.腾讯音视频实时互动 跑通demo 三.同时集成即时通讯IM 和 音视频直播的 坑 ...

  8. 【解决】Android 腾讯地图 选点定位组件,获取当前位置有偏差所遇到的坑!!

    解决方案一: 获取当前位置有偏差只能到市?可以先定位获取经纬度,然后把经纬度拼接到链接中即可 https://blog.csdn.net/yechaoa/article/details/8889378 ...

  9. Android X5WebView网络监听替换WebView失败页面稳定

    一.我这边是集成了腾讯所提供的X5Webview插件,没有别的原因,就感觉比原生处理的稍微好点吧. x5Webview与H5的交互问题 x5同步cookie问题 WebView加载进度条问题处理 H5 ...

  10. 腾讯TBS X5 WebView的简单使用

    工作中经常涉及H5网页的加载工作,最多使用的就是安卓系统控件WebView,但是当网页内容比较多的时候,需要等待很久才能加载完,加载完后用户才能看到网页中的内容,这样用户需要等很久,体验很差. 那能不 ...

最新文章

  1. python中__dict__与dir()区别
  2. 空间复杂度分段分段有序数组合并成有序(空间复杂度为O(1))
  3. JAVA开发者大会-Spring Cloud网关分享
  4. 【2012百度之星/初赛上】D:轮子上的度度熊
  5. PWN-PRACTICE-BUUCTF-8
  6. C语言中的常用文件操作
  7. WordPress暗黑极客主题Lotus1.1
  8. 常用JavaScript函数 47 - 58(自我总结)
  9. vue使用高德地图画电子围栏_Vue.js 中使用高德地图定位及渲染地图
  10. mysql作业是什么意思_MySQL 作业七
  11. Java虚拟机(二)——垃圾回收与内存分配
  12. 细节模拟题:素数回文
  13. [1][python基础]条件判断[4]
  14. efm32芯片电压_【经验】基于EFM32G232芯片 ADC采样毛刺问题分析以及解决方案
  15. Xilinx SDx 2018.3安装
  16. 8. SpringBoot基础学习笔记
  17. 深度学习:蒸馏Distill
  18. Android Multidex(dex分包)
  19. INSERT 语句 增加条件,条件成立插入,否则不插入
  20. window怎么录制GIF

热门文章

  1. matlab肌电信号hz低通滤波器,燕山大学 数字信号处理 课程设计 肌电信号 Matlab 程序汇总...
  2. 和利时dcs系统服务器设置,和利时DCS控制系统组态流程
  3. 开发软件安装教程-MATLAB2016b安装教程图解
  4. 酷派N900刷机教程
  5. 淘宝网购物车jquery源码和网易新用户注册页面表单验证的练习
  6. unity多人联机插件_Unity网络系统插件,打通游戏联网任督二脉
  7. 如何做好信息化和数字化建设,看这一篇就够了--童亚斋
  8. CentOS故障排除详解(2): 进程相关
  9. js实现本地上传图片及预览
  10. 【地理信息技术】 上机04 栅格数据的空间分析(一) 学校选址分析