在混合開發(fā)中有H5頁面需要縮放的需求霜运,但又不是所有的頁面都需要允許縮放苍狰。而在混合開發(fā)中我的常用做法是只打造一個(gè)WebView頁面(這樣便于內(nèi)存管理和交互邏輯管理浅碾,關(guān)于這方面的內(nèi)容以后再講)挡逼。這個(gè)時(shí)候最好的做法就是將頁面的縮放權(quán)限交給H5來自行控制。
在 Android 中需要做的是開啟WebView對(duì) viewport mate 的支持:
WebSettings webSettings = webView.getSettings()
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
LayoutAlgorithm是一個(gè)枚舉用來控制頁面的布局错邦,有三個(gè)類型:
NORMAL:意味著沒有呈現(xiàn)的變化探赫。這是針對(duì)不同平臺(tái)和Android版本的最大兼容性的推薦選擇。
SINGLE_COLUMN:將所有內(nèi)容移動(dòng)到一個(gè)列中撬呢,該列是視圖的寬度伦吠。
NARROW_COLUMNS:如果可能的話,所有的列都不會(huì)比屏幕寬魂拦。在KITKAT之前只使用這個(gè)API級(jí)別毛仪。
TEXT_AUTOSIZING:增加基于啟發(fā)式的段落的字體大小,以便在概述模式下查看寬視端口布局時(shí)使文本具有可讀性芯勘。當(dāng)使用此模式時(shí)箱靴,建議啟用zoom support setSupportZoom(boolean)。支持API級(jí)KITKAT荷愕。
setUseWideViewPort(boolean use)
設(shè)置WebView是否應(yīng)該支持“viewport”HTML meta標(biāo)記衡怀,還是應(yīng)該使用一個(gè)大的viewport。
viewport meta 標(biāo)簽
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
上面標(biāo)簽的意思就是 viewport的 width等于設(shè)備的width安疗,頁面初始縮放為1抛杨,不允許用戶縮放頁面。
屬性 | 介紹 |
---|---|
width | 設(shè)置布局viewport的特定值(''device-width'') |
initial-scale | 設(shè)置頁面縮放的初始值 |
minimum-scale | 最小縮放比例值 |
maximum-scale | 最大縮放比例值 |
user-scalable | 是否允許用戶縮放 |