腾讯TBS X5 WebView的简单使用
工作中经常涉及H5网页的加载工作,最多使用的就是安卓系统控件WebView,但是当网页内容比较多的时候,需要等待很久才能加载完,加载完后用户才能看到网页中的内容,这样用户需要等很久,体验很差。
那能不能边加载边显示呢,通过搜索发现腾讯X5WebView可以实现,相对体验要好很多,况且手Q、微信、QQ浏览器使用的该插件,故值得一试。
步骤如下:
一、下载jar包及so文件分别放到libs和jniLibs文件夹
二、添加权限
1 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /
2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
4 <uses-permission android:name="android.permission.INTERNET" />
5 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
三、Application中初始化
1 private void initX5WebView() {
2 //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
3 QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
4 @Override
5 public void onViewInitFinished(boolean arg0) {
6 //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
7 Log.d("app", " onViewInitFinished is " arg0);
8 }
9
10 @Override
11 public void onCoreInitFinished() {
12 }
13 };
14 //x5内核初始化接口
15 QbSdk.initX5Environment(getApplicationContext(), cb);
16 }
四、使用自定义X5WebView继承腾讯包下WebView
1 import android.annotation.SuppressLint;
2 import android.content.Context;
3 import android.util.AttributeSet;
4
5 import com.tencent.smtt.sdk.WebSettings;
6 import com.tencent.smtt.sdk.WebSettings.LayoutAlgorithm;
7 import com.tencent.smtt.sdk.WebView;
8 import com.tencent.smtt.sdk.WebViewClient;
9
10 public class X5WebView extends WebView {
11
12 private WebViewClient client = new WebViewClient() {
13 /**
14 * 防止加载网页时调起系统浏览器
15 */
16 public boolean shouldOverrideUrlLoading(WebView view, String url) {
17 view.loadUrl(url);
18 return true;
19 }
20 };
21
22 @SuppressLint("SetJavaScriptEnabled")
23 public X5WebView(Context arg0, AttributeSet arg1) {
24 super(arg0, arg1);
25 this.setWebViewClient(client);
26 // this.setWebChromeClient(chromeClient);
27 // WebStorage webStorage = WebStorage.getInstance();
28 initWebViewSettings();
29 this.getView().setClickable(true);
30 }
31
32 private void initWebViewSettings() {
33 WebSettings webSetting = this.getSettings();
34 webSetting.setJavaScriptEnabled(true);
35 webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
36 webSetting.setAllowFileAccess(true);
37 webSetting.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
38 webSetting.setSupportZoom(true);
39 webSetting.setBuiltInZoomControls(true);
40 webSetting.setUseWideViewPort(true);
41 webSetting.setSupportMultipleWindows(true);
42 // webSetting.setLoadWithOverviewMode(true);
43 webSetting.setAppCacheEnabled(true);
44 // webSetting.setDatabaseEnabled(true);
45 webSetting.setDomStorageEnabled(true);
46 webSetting.setGeolocationEnabled(true);
47 webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
48 // webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);
49 webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
50 // webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
51 webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);
52
53 // this.getSettingsExtension().setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);//extension
54 // settings 的设计
55 }
56
57 public X5WebView(Context arg0) {
58 super(arg0);
59 setBackgroundColor(85621);
60 }
61
62 }
五、Activity中使用
1 /**
2 * @author geqipeng
3 * @date 2018/1/18
4 */
5
6 public class WebViewTestActivity extends Activity {
7
8 private static final String mHomeUrl = "http://app.html5.qq.com/navi/index";
9 private X5WebView mX5WebView;
10
11 @Override
12 protected void onCreate(@Nullable Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.activity_webview_test);
15 initHardwareAccelerate();
16 initView();
17 }
18
19 /**
20 * 启用硬件加速
21 */
22 private void initHardwareAccelerate() {
23 try {
24 if (Integer.parseInt(android.os.Build.VERSION.SDK) >= 11) {
25 getWindow()
26 .setFlags(
27 android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
28 android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
29 }
30 } catch (Exception e) {
31 }
32 }
33
34 private void initView() {
35 mX5WebView = findViewById(R.id.x5_webview);
36 mX5WebView.loadUrl(mHomeUrl);
37 }
38
39 /**
40 * 返回键监听
41 * @param keyCode
42 * @param event
43 * @return
44 */
45 @Override
46 public boolean onKeyDown(int keyCode, KeyEvent event) {
47 if (keyCode == KeyEvent.KEYCODE_BACK) {
48 if (mX5WebView != null && mX5WebView.canGoBack()) {
49 mX5WebView.goBack();
50 return true;
51 } else {
52 return super.onKeyDown(keyCode, event);
53 }
54 }
55 return super.onKeyDown(keyCode, event);
56 }
57
58
59 @Override
60 protected void onDestroy() {
61 //释放资源
62 if (mX5WebView != null)
63 mX5WebView.destroy();
64 super.onDestroy();
65 }
66 }
六、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点击打开链接
更多专业前端知识,请上 【猿2048】www.mk2048.com
腾讯TBS X5 WebView的简单使用相关推荐
- 三方库 之 分分钟集成腾讯 TBS X5 。。。
LZ-Says:想和你喝酒是假,想醉你怀里是真. 前言 最近一段时间,都是在被前端虐了,还好,谈不上游刃有余,至少可以实现所需功能,调试起来也不会太过于懵逼. 当然,和大佬相比,还是差距很多.前段时间 ...
- 听说 TBS x5 Webview 加载 H5 游戏提示申请相机权限
现如今,渠道上架应用或游戏,对敏感信息合规检测还是比较严格的,一般都会采用自动化 + 人工检测. 比如上架审核一个无需相机和录音权限的包体,绝大部分会遭到拒审(除非漏检?)! 本次遇到的就是类似情况, ...
- Android 使用WebView 实现播放爱奇艺视频,可全屏(使用的腾讯的X5内核) (一)
项目中有个需求,播放爱奇艺的视频,百度了一通,可能是搜索词有问题,没找到解决方法,后来无意中发现微信可以播放,就想到是否可以使用微信的x5内核,一试发现可以实现.想要实现的效果如下,点击全屏后全屏播放 ...
- android x5获取播放地址,Android 使用WebView 实现播放爱奇艺视频,可全屏(使用的腾讯的X5内核) (一)...
Android 使用WebView 实现播放爱奇艺视频,可全屏(使用的腾讯的X5内核) (一) 发布时间:2018-06-27 18:30, 浏览次数:1438 , 标签: Android WebVi ...
- Android 使用腾讯X5 Webview浏览器拍照或从相册上传图片
最近在项目开发中,需要使用WebView上传文件.默认情况下情况下,使用Android的WebView是不能够支持上传文件的. 经过查找资料,得知需要重新WebChromeClient,根据选择到的文 ...
- 安卓使用腾讯tbs查看pdf/word文件(解决x5内核下载问题)
引言: 项目需要预览pdf.word等文件,但是用户不一定安装了wps这样的软件,因此需要在项目里支持查看这些文件.笔者本身是不想使用webview的,因此尝试了很多原生的,但是对于doc文件基本没有 ...
- android安卓接入腾讯X5浏览器内核TBS基本使用,配置腾讯TBS
更多其他页面-自定义View-实用功能合集:点击查看 使用腾讯Tbs,会导致上架google应用商城失败! 关于X5内核的一些bug解决,可以查看这些文章: 链接: 解决bug. 安卓原生webvie ...
- 记一次腾讯TBS浏览服务集成实践
这次的分享源于最近的实际开发工作. 项目需求是 在原生Android应用中嵌入WebView,放置用于支撑音视频直播业务的Web页: 另外还需提供Word.Excel.PowerPoint.PDF等常 ...
- Android Tencent X5 WebView 集成封装
Android Tencent X5 WebView 集成封装 Cookie管理.进度监听.适配8.1系统等策略 这篇文章的目标就是怎么样快速封装X5WebView,如何有效的同步以及管理Cookie ...
最新文章
- java笔试题(一):斐波那契数列
- windows下nodejs环境配置
- php yii model,Yii模型
- c语言系统时间的作用,C语言得到当前系统时间
- mysql insert 不需要日志_详解MySQL|你不知道的新特性-8.0错误日志增强
- 我的react组件化开发道路(二) 分页 组件开发
- Abp vnext 授权(Authorization)
- JVM实战总结:一个多线程中对象引用的问题
- iphonexr电池容量_xr电池容量多少毫安,iphonexr换电池多少钱
- (10)JavaScript学习笔记 - 数组
- -XX:+PrintGCTimeStamps -XX:+PrintGCDetails 日志分析
- 《动手学深度学习》(PyTorch版)代码注释 - 47 【Image_augmentation】
- 联想G40进入BIOS
- php幸运扭蛋机抽奖程序源码
- 【matlab】正弦波、方波、三角波、白噪声等8种基本信号
- 【ORACLE】ORACLE IMPDP导入提示ORA-01918:user‘XXX’ does not exist
- 中国象棋棋盘java_Java中国象棋博弈程序探秘[2]——棋盘的表示
- Asus Eee Pc,看起来很不错
- yolov5的多摄像头检测
- Ubuntu18.04下Opencv的安装及使用实例
热门文章
- PHP密码问题陈婷代码_PHP实现登录注册
- Java锤子剪刀布大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
- [暑假集训Day4T3]曲线
- H3C 计算子网内可用主机地址数
- Arduino 与 SPI 结合使用 以及SPI 深层理解
- SpringMVC 上传文件and过滤器
- Java 12 - Java StringBuffer和StringBuilder类
- git rm -r --cached 去掉已经托管在git上的文件
- redux-4-ways
- [转]使用C#开发ActiveX控件