一琢蛤、基本使用
動(dòng)態(tài)創(chuàng)建 WebView webview = new WebView(Context);
xml中配置
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent" />
二蜓堕、網(wǎng)頁(yè)加載方式
加載url
webView.loadUrl("http://www.reibang.com/");
加載本地
webView.loadUrl("file:///android_asset/html/index.html");
加載sd卡文件
webView.loadUrl("content://com.Android.htmlfileprovider/sdcard/kris.html");
三、WebViewSetting(如名:WebView的設(shè)置類(lèi) 設(shè)置一些 是否支持js博其、設(shè)置UA套才、 自動(dòng)縮放、自適應(yīng)屏幕等)
獲取 WebViewSetting 對(duì)象
WebSettings mWebSettings = webView.getSettings();
//是否支持JS
mWebSettings.setJavaScriptEnabled(boolean);
//支持通過(guò)js打開(kāi)新的窗口
mWebSettings.setJavaScriptCanOpenWindowsAutomatically(boolean);
//提高渲染等級(jí)
mWebSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
//設(shè)置瀏覽器UA
mWebSettings.setUserAgentString("");
// 設(shè)置支持縮放
mWebSettings.setBuiltInZoomControls(boolean);
//自動(dòng)縮放 需要與上一個(gè)方法同時(shí)使用
mWebSettings.setSupportZoom(boolean);
//自適應(yīng)屏幕
mWebSettings.setUseWideViewPort(boolean);
mWebSettings.setLoadWithOverviewMode(boolean);
//使用localStorage則必須打開(kāi)
mWebSettings.setDomStorageEnabled(boolean);
// 首先阻塞圖片慕淡,讓圖片不顯示
mWebSettings.setBlockNetworkImage(boolean);
// 頁(yè)面加載好以后芽淡,在放開(kāi)圖片:
mWebSettings.setBlockNetworkImage(boolean);
//設(shè)置同一個(gè)界面
mWebSettings.setSupportMultipleWindows(boolean);
//禁用網(wǎng)絡(luò)圖片
mWebSettings.setBlockNetworkImage(boolean);
//getLoadsImagesAutomatically返回true才有效果
mWebSettings.setCacheMode(Int);
一個(gè)普通網(wǎng)頁(yè)的加載cache會(huì)被檢查胧砰,內(nèi)容也會(huì)被重新校驗(yàn),第一次訪問(wèn)網(wǎng)頁(yè)時(shí),會(huì)存儲(chǔ)cache到本地哪怔,設(shè)置策略可以讓網(wǎng)頁(yè)加載方式發(fā)生變化.
cache模式有如下幾種:
LOAD_DEFAULT: 如果我們應(yīng)用程序沒(méi)有設(shè)置任何cachemode硝清, 這個(gè)是默認(rèn)的cache方式蕾哟。 加載一張網(wǎng)頁(yè)會(huì)檢查是否有cache覆积,如果有并且沒(méi)有過(guò)期則使用本地cache,否則 從網(wǎng)絡(luò)上獲取徐紧。
LOAD_CACHE_ELSE_NETWORK: 使用cache資源静檬,即使過(guò)期了也使用,如果沒(méi)有cache才從網(wǎng)絡(luò)上獲取浪汪。
LOAD_NO_CACHE: 不使用cache 全部從網(wǎng)絡(luò)上獲取
LOAD_CACHE_ONLY: 只使用cache上的內(nèi)容巴柿。
mWebSettings.setNeedInitialFocus(boolean);// 是否禁止webview上面控件獲取焦點(diǎn)(黃色邊框)
四、WebViewClient
進(jìn)行頁(yè)面死遭、資源的加載回調(diào)處理
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//頁(yè)面開(kāi)始加載時(shí)
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
//頁(yè)面加載結(jié)束時(shí)
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
// 這里進(jìn)行無(wú)網(wǎng)絡(luò)或錯(cuò)誤處理广恢,具體可以根據(jù)errorCode的值進(jìn)行判斷,
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
//進(jìn)行ssl處理 比如接受所有網(wǎng)站的證書(shū)
handler.proceed();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
/**
* 網(wǎng)頁(yè)跳轉(zhuǎn):
* 1.在當(dāng)前的webview跳轉(zhuǎn)到新連接
* view.loadUrl(url);
* 2.調(diào)用系統(tǒng)瀏覽器跳轉(zhuǎn)到新網(wǎng)頁(yè)
* Intent i = new Intent(Intent.ACTION_VIEW);
* i.setData(Uri.parse(url));
* startActivity(i);
*/
return true;
}
});
WebResourceResponse preload(String url) {
//可攔截資源文件加載 并重定向資源
如重定向某js文件
return new WebResourceResponse(mimeType, "UTF-8", InputStream);
}
其他的功能說(shuō)明有兩個(gè)比較好的文章
1呀潭、https://blog.csdn.net/xiangzhihong8/article/details/51082541