X5內(nèi)核,微信和QQ瀏覽器都在用的WebView榕订; 官網(wǎng)地址:https://x5.tencent.com店茶,詳細的信息進官網(wǎng)了解;
這是官方的宣傳語:
1) 速度快:相比系統(tǒng)webview的網(wǎng)頁打開速度有30+%的提升卸亮;
2) 省流量:使用云端優(yōu)化技術使流量節(jié)省20+%忽妒;
3) 更安全:安全問題可以在24小時內(nèi)修復;
4) 更穩(wěn)定:經(jīng)過億級用戶的使用考驗兼贸,CRASH率低于0.15%段直;
5) 兼容好:無系統(tǒng)內(nèi)核的碎片化問題,更少的兼容性問題溶诞;
6) 體驗優(yōu):支持夜間模式鸯檬、適屏排版、字體設置等瀏覽增強功能螺垢;
7) 功能全:在Html5喧务、ES6上有更完整支持;
8) 更強大:集成強大的視頻播放器枉圃,支持視頻格式遠多于系統(tǒng)webview功茴;
9) 視頻和文件格式的支持x5內(nèi)核多于系統(tǒng)內(nèi)核
10) 防劫持是x5內(nèi)核的一大亮點
開始集成:
1、下載SDK:
2孽亲、添加JAR:
SDK中附有so文件坎穿,看需求引入,
3返劲、初始化X5WebView:
publicclassAPPAplicationextendsApplication{@OverridepublicvoidonCreate(){// TODO Auto-generated method stubsuper.onCreate();//搜集本地tbs內(nèi)核信息并上報服務器玲昧,服務器返回結果決定使用哪個內(nèi)核。QbSdk.PreInitCallback cb =newQbSdk.PreInitCallback() {@OverridepublicvoidonViewInitFinished(booleanarg0){// TODO Auto-generated method stub//x5內(nèi)核初始化完成的回調篮绿,為true表示x5內(nèi)核加載成功孵延,否則表示x5內(nèi)核加載失敗,會自動切換到系統(tǒng)內(nèi)核亲配。Log.d("app"," onViewInitFinished is "+ arg0);}@OverridepublicvoidonCoreInitFinished(){// TODO Auto-generated method stub}};//x5內(nèi)核初始化接口QbSdk.initX5Environment(getApplicationContext(),? cb);}}
4尘应、看心情抽取X5WebView的自定義View:
publicclassX5WebViewextendsWebView{privateWebViewClient client =newWebViewClient(){/**
* 防止加載網(wǎng)頁時調起系統(tǒng)瀏覽器
*/publicbooleanshouldOverrideUrlLoading(WebView view,Stringurl){view.loadUrl(url);returntrue;}};@SuppressLint("SetJavaScriptEnabled")publicX5WebView(Context arg0, AttributeSet arg1){super(arg0, arg1);this.setWebViewClient(client);// this.setWebChromeClient(chromeClient);// WebStorage webStorage = WebStorage.getInstance();initWebViewSettings();this.getView().setClickable(true);}privatevoidinitWebViewSettings(){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 的設計}}
5、開始使用:
<!--原生的WebView--><!--騰訊X5WebView--><!--使用抽取的X5WebView-->
然后使用就跟正常的WebView一樣就行了弃榨;
publicclassWebViewActivityextendsAppCompatActivity{privateX5WebView wv;@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);? ? ? ? setContentView(R.layout.activity_web_view);? ? ? ? wv = findViewById(R.id.webview);? ? ? ? wv.loadUrl("https://www.baidu.com/");//這個是加載的urlLog.i("X5WebView","如果這個值不是null菩收,說明現(xiàn)在用的是X5內(nèi)核,wv.getX5WebViewExtension() = : "+ wv.getX5WebViewExtension());//H5調用原生的方法wv.addJavascriptInterface(newWebViewJavaScriptFunction(){@JavascriptInterface@OverridepublicvoidonJsFunctionCalled(Stringtag){? ? ? ? ? ? }? ? ? ? },"Android");? ? }}