日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

X5WebView使用

發(fā)布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 X5WebView使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

用過 Android 自帶?WebView 的都知道,每次加載數(shù)據(jù)過多時,等待時間非常久,體驗非常差。所以騰訊推出了:騰訊瀏覽服務(wù),也就是?X5WebView ;下面來看一下效果圖:

GitHub 下載地址:https://github.com/wuqingsen/X5WebView

?

1.?下載jar包及so文件

打開官網(wǎng),下載 jar 包和 so 文件,下載地址為:https://x5.tencent.com/tbs/sdk.html

下載完畢將 jar 包和 so 文件分別復(fù)制到?libs 和 jniLibs 文件夾下,如下圖所示:

?

2. 新建類Application

新建類 MyAplication 在里面啟動 x5WebView 內(nèi)核加載:

public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();initX5WebView();}private void initX5WebView() {//搜集本地tbs內(nèi)核信息并上報服務(wù)器,服務(wù)器返回結(jié)果決定使用哪個內(nèi)核。QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {@Overridepublic void onViewInitFinished(boolean arg0) {//x5內(nèi)核初始化完成的回調(diào),為true表示x5內(nèi)核加載成功,否則表示x5內(nèi)核加載失敗,會自動切換到系統(tǒng)內(nèi)核。if (arg0) {Log.e("=====myApp", " x5WebView內(nèi)核加載成功" + arg0);} else {Log.e("=====myApp", " x5WebView內(nèi)核加載失敗" + arg0);}}@Overridepublic void onCoreInitFinished() {}};//x5內(nèi)核初始化接口QbSdk.initX5Environment(getApplicationContext(), cb);} }

別忘了在 AndroidManfest.xml 文件中應(yīng)用:

?

3. 加入權(quán)限

在 AndroidManfest.xml 文件中加入相應(yīng)的權(quán)限:

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

?

4. 重寫 webView

重寫?webView 類,名字為?X5webView,(?注意:不要把包名導(dǎo)入錯了?):

import android.annotation.SuppressLint; import android.content.Context; import android.util.AttributeSet;import com.tencent.smtt.sdk.WebSettings; import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebViewClient;/*** author: wu* date: on 2019/2/13.* describe:騰訊X5WebView封裝*/ public class X5WebView extends WebView {private WebViewClient client = new WebViewClient() {/*** 防止加載網(wǎng)頁時調(diào)起系統(tǒng)瀏覽器*/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(WebSettings.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 的設(shè)計}public X5WebView(Context arg0) {super(arg0);setBackgroundColor(85621);} }

?

5. 在 xml 文件中加入 X5WebView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ProgressBarandroid:id="@+id/progressBar"style="?android:attr/progressBarStyleHorizontal"android:layout_width="fill_parent"android:layout_height="5dp"android:indeterminateOnly="false"android:max="100"android:progressDrawable="@drawable/progress_bar_states" /><com.example.qd.webviewx5.X5WebViewandroid:id="@+id/x5WebView"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

下面是進度條的樣式?progress_bar_states :

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background"><shape><corners android:radius="2dp" /><gradientandroid:angle="270"android:centerColor="#E3E3E3"android:endColor="#E6E6E6"android:startColor="#C8C8C8" /></shape></item><item android:id="@android:id/progress"><clip><shape><corners android:radius="2dp" /><gradientandroid:centerColor="#FF1D9AFF"android:endColor="#FF1D9AFF"android:startColor="#FF1D9AFF" /></shape></clip></item> </layer-list>

?

6.?activity 中加入代碼

在對應(yīng) activity 中加入代碼,代碼中包括啟動加速、設(shè)置進度條、設(shè)置點擊事件和加載錯誤的設(shè)置 ( 注意:包不要導(dǎo)入錯了?) 。

import com.tencent.smtt.export.external.interfaces.WebResourceError; import com.tencent.smtt.export.external.interfaces.WebResourceRequest; import com.tencent.smtt.sdk.WebChromeClient; import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebViewClient;public class MainActivity extends AppCompatActivity {private X5WebView mX5WebView;private ProgressBar progressBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mX5WebView = findViewById(R.id.x5WebView);progressBar = findViewById(R.id.progressBar);mX5WebView.loadUrl("https://blog.csdn.net/wuqingsen1");initX5WebView();setProgressBar();setClick();}/*** 啟用硬件加速*/private void initX5WebView() {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) {}}/*** 設(shè)置進度條*/private void setProgressBar() {mX5WebView.setWebChromeClient(new WebChromeClient(){@Overridepublic void onProgressChanged(WebView view, int newProgress) {//顯示進度條if (newProgress < 100) {progressBar.setProgress(newProgress);progressBar.setVisibility(View.VISIBLE);}else {progressBar.setVisibility(View.GONE);}}});}/*** 點擊事件*/private void setClick() {mX5WebView.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {return super.shouldOverrideUrlLoading(view, request);//點擊事件}@Overridepublic void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {super.onReceivedError(view, request, error);//加載錯誤}});}/*** 返回鍵監(jiān)聽*/@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();} }

?

這樣 X5WebView 就可以使用了。

總結(jié)

以上是生活随笔為你收集整理的X5WebView使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。