本文完全是翻譯與總結谷歌官方的教程,已確保文檔的正確性。
免得大家被五花八門的其他的資料弄混了,也沒有系統行的學習。
一、設置窗口尺寸和適配屏幕分辨率
谷歌官方文檔提到兩個大的方面。
1.Viewport視圖窗口
這個是html中設置的。主要是設置高度和寬度,還有初始的比列。這個寬度與高度將絕對html裏面CSS中有多少個像素可用。
Viewport的寬度與屏幕的寬度沒有決定性的關係。比如你的手機寬度是480PX但是你可以設置Viewport的寬度爲960PX,這樣一張800PX的圖片就能一次性顯示完整,因爲很多瀏覽器比如chrome,會儘可能的縮放,縮小到能一屏幕能展現整個網頁,也就是960PX的寬度。
注意:使用webView時並不會默認使用 全局概要模式。也就是自動縮小,用這個方法設置一下就行setUseWideViewPort()
.
<head> <title>Example</title> <meta name="viewport" content="width=device-width, user-scalable=no" /> </head>
<meta name="viewport" content=" height = [pixel_value | "device-height"] , width = [pixel_value | "device-width"] , initial-scale = float_value , minimum-scale = float_value , maximum-scale = float_value , user-scalable = ["yes" | "no"] " />注意:除非你確定你的程序自動適配的很好,而且在最小尺寸下也能使用,否則不要關閉user-scalable。
2.屏幕分辨率
html在CSS中寫的像素單位,在Android中等同於160DPI的手機。如果是320DPI的手機,就會對這個單位進行放大。比如如果一張300像素寬的圖片,在160PI中能正常的顯示,但是到了320DPI中的手機就會放大兩倍,這個時候圖片就會失真,模糊,有紋理。
二、通過CSS來適配
1.不同分辨率使用不同的CSS
通過設置-webkit-device-pixel-ratio 這個屬性0.75,1,,1.5來對應低分率,中分辨率,高分辨率。其實就是下面的寫法
<link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio: 1.5)" href="hdpi.css" /> <link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio: 1.0)" href="mdpi.css" />2.或者通過不同的style和樣式表,寫法如下
#header { background:url(medium-density-image.png); } @media screen and (-webkit-device-pixel-ratio: 1.5) { /* CSS for high-density screens */ #header { background:url(high-density-image.png); } } @media screen and (-webkit-device-pixel-ratio: 0.75) { /* CSS for low-density screens */ #header { background:url(low-density-image.png); } }更多關於如何適配分辨率尤其是圖片的適配可以參見 High DPI Images for Variable Pixel Densities.。
稍後如果有時間會把這個鏈接裏面的內容也總結一下。
三、通過javascript來適配
寫法如下:
Android瀏覽器或者WebView會通過 window.devicePixelRatio這個DOM文檔定義的屬性來指定當前的縮放比例。
默認的縮放比例是1.0.可以通過如下代碼來獲取比例,並作出對應的處理。
if (window.devicePixelRatio == 1.5) { alert("This is a high-density screen"); } else if (window.devicePixelRatio == 0.75) { alert("This is a low-density screen"); }