项目中经常会用到WebView,Android原生的WebView使用会有点不太好用,在此介绍一个比较好用的WebView,腾讯的X5 WebView,微信里面也是这个WebView。
一.添加依赖,权限:
// 腾讯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);
}
}
三.代码中使用:
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.tencent.smtt.sdk.QbSdk
import com.tencent.smtt.sdk.WebChromeClient
import com.tencent.smtt.sdk.WebView
import com.yanzhenjie.permission.AndPermission
import com.yanzhenjie.permission.runtime.Permission
import kotlinx.android.synthetic.main.activity_main.*
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()
}
}
完结!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)