html適配Anroid手機

來源:互聯網
上載者:User

標籤:web適配   適配   

本文完全是翻譯與總結Google官方的教程,已確保文檔的正確性。

免得大家被五花八門的其他的資料弄混了,也沒有系統行的學習。


一、設定視窗尺寸和適配螢幕解析度

Google官方文檔提到兩個大的方面。

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");}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.