项目中经常会用到WebView,Android原生的WebView使用会有点不太好用,在此介绍一个比较好用的X5WebView。

一.添加依赖,权限:

// X5内核WebView

implementation 'com.tencent.tbs:tbssdk:44085'

二. 在Application初始化:

public class MyApplication extends Application {

public static final String TAG = "MyApplication";

@Override

public void onCreate() {

super.onCreate();

// X5WebView初始化

initX5WebView();

}

private void initX5WebView() {

// 搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。

QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

@Override

public void onViewInitFinished(boolean arg0) {

// x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。

LogUtils.d("onViewInitFinished is "+arg0);

}

@Override

public void onCoreInitFinished() {

}

};

// x5内核初始化接口

QbSdk.initX5Environment(this, cb);

// 在调用TBS初始化、创建WebView之前进行如下配置

HashMap map = new HashMap();

map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);

map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);

QbSdk.initTbsSettings(map);

}

}

三.代码中使用:

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

android:id="@+id/forum_context"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

AndPermission.with(this)

.runtime()

.permission(Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_PHONE_STATE)

.onGranted { }

.onDenied { }

.start()

// 加载进度

forum_context.webChromeClient = object : WebChromeClient() {

override fun onProgressChanged(p0: WebView?, p1: Int) {

super.onProgressChanged(p0, p1)

LogUtils.d(p1)

}

}

forum_context.settings.javaScriptEnabled = true // 开启js

forum_context.settingsExtension.setDisplayCutoutEnable(true) // 刘海屏适配

forum_context.loadUrl("https://www.baidu.com") // 加载url

}

override fun onDestroy() {

QbSdk.clearAllWebViewCache(this, true) // 清除缓存

super.onDestroy()

}

}

完结!!!

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: