配置webview縮放參數值:
//設置true,才能讓Webivew支持<meta>標籤的viewport屬性
webSettings.setUseWideViewPort(true);
//設置可以支持縮放
webSettings.setSupportZoom(true);
//設置出現縮放工具
webSettings.setBuiltInZoomControls(true);
//設定縮放控件隱藏
webSettings.setDisplayZoomControls(false);
//最小縮放等級
setInitialScale(25);
對於setInitialScale屬性詳解:
setInitialScale(100); 代表不縮放。
什麼是不縮放?
比如你要加載的網頁中有圖片的寬度是 500px ,如果你的手機分辨率(屏幕寬度) 是1000的話,那麼整個圖片只佔一半的屏幕。 其他的字體都是按照標準展示。
縮放級別
-
如果這個時候如果你設置 setInitialScale(200) ,代表放大一倍,整個網頁都會放大一倍,這個時候圖片正好展示整個屏幕寬度,另外網頁的字體也會放大一倍;
-
如果這個時候如果你設置setInitialScale(50) ,代表縮小一倍,這個時候圖片正好展示只佔屏幕的四分之一,另外網頁的字體也會同時變小.
上面的設置僅限於打開的網頁支持縮放功能,支不支持縮放功能取決於html的設置。
若html中設置了以下屬性:
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
該網頁在WebView中顯示的時候即是不支持縮放的。
示例:
/**
* 初始化webview
*/
private void initWebView() {
// 獲取webSettings
WebSettings settings = mWebView.getSettings();
// 支持js
settings.setJavaScriptEnabled(true);
// 設置編碼
settings.setDefaultTextEncodingName("utf-8");
// 不使用緩存
// settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
// 在LOAD_CACHE_ELSE_NETWORK模式下,無論是否有網絡,只要本地有緩存,
// 都使用緩存。本地沒有緩存時才從網絡上獲取。
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
// 配置緩存,否則百度地圖不顯示
// 設置啓用或禁止訪問文件數據
settings.setAllowFileAccess(true);
// 最重要的方法,一定要設置,這就是出不來的主要原因
settings.setDomStorageEnabled(true);
// 啓用數據庫
// settings.setDatabaseEnabled(true);
// String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
// 啓用地理定位
// settings.setGeolocationEnabled(true);
// 設置定位的數據庫路徑
// settings.setGeolocationDatabasePath(dir);
// 設置可以支持縮放
settings.setSupportZoom(true);
// 設置出現縮放工具
//settings.setBuiltInZoomControls(true);
// 最小縮放等級
mWebView.setInitialScale(100);
// 設置本地調用對象及其接口
mWebView.addJavascriptInterface(new JsBridage(mAndroidJsImpl, this), "android");
// 覆蓋WebView默認使用第三方或系統默認瀏覽器打開網頁的行爲,使網頁用WebView打開
mWebView.setWebViewClient(new WebViewClient() {
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//返回值是true的時候控制去WebView打開,爲false調用系統瀏覽器或第三方瀏覽器
//對攔截的url進行處理,shouldOverrideUrlLoading,攔截url加載,除資源請求的url
//shouldInterceptRequest(攔截所有url請求),此處採用加載攔截
mUrlResolve.resolveUrl(url);
//android與js交互時使用
//view.loadUrl(url);
return true;
}
@RequiresApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
//對攔截的url進行處理
mUrlResolve.resolveUrl(url);
//android與js交互時使用
//view.loadUrl(url);
return true;
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
//攔截所有請求,用document.referrer,這個屬性是指從什麼頁面來到當前頁面的。
//javascript:history.back(-1); 改爲 location.href=document.referrer;
//如果A.jsp跳到B.jsp,那麼這個值應該是url/A.jsp。點擊錨點之後這個屬性也不會變。
String url = request.getUrl().toString();
return super.shouldInterceptRequest(view, request);
}
});
}
完!!!