2013-11-27 66 views
1

我想弄清楚如何在Android 4.0及更高版本的應用程序中的嵌入式WebView中指定CSS尺寸。在三個設備我與(的Nexus 4/7/10)測試,看來如果我使用下面的視窗指令:Android WebView:如果width = device-width和scale = 1.0,CSS像素是否始終等於DIP?

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 

...然後在任何內容CSS尺寸加載到網頁流量是與設備無關像素完全相同。也就是說,在我的Nexus 10上,它的像素寬度爲2560,如果在我的webview中指定了寬度爲1280的東西,它將精確地填滿屏幕寬度。

我喜歡這個想法,我可以在CSS中使用與設備無關的像素,但我需要確保能夠計算這些DIP中的精確可用空間。所以我期望如果一個WebView的寬度爲1920像素,它的CSS像素寬度應該爲:

  • 在mdpi顯示器上,1920px。
  • 在hdpi顯示器上,1280px。
  • 在xhdpi顯示器上,960px。
  • 在xxhdpi顯示屏上,640px。

這是真的嗎?

回答

0

如果你想身體<轉換 - > DIP像素,那麼你需要使用window.devicePixelRatio(或DisplayMetrics):密度名稱(MDPI,華電國際等。)只是括號/類別 - 在兩個設備同一類別可能具有不同的devicePixelRatio值。

對於你在做什麼,看看Pixel-Perfect UI in the WebView可能是個好主意。

+0

我已經閱讀過那個頁面,但我只是重新瀏覽了一下,我想我發現了我的理解。它說,「CSS」像素「實際上考慮了設備像素比率(512px * 2 = 1024px)。」此外,關於像素比率,我的理解是,無論每英寸的實際點數是多少,每個設備都將落入預定義存儲區之一(1.0x,1.5x,2.0x和3.0x)。他們提供的所有示例都使用這些示例,並且它們鏈接到的網站(http://screensiz.es)僅顯示這些值。 –

+0

@BrianRak 「每個設備都會落入其中一個預定義存儲區(1.0x,1.5x,2.0x和3.0x)」:「舊」N7的像素比率爲1.33 ..,這既不是以上:) –

+0

有趣。實際上,1.33也是一個預定義的桶,稱爲「tvdpi」。 (http://developer.android.com/guide/topics/resources/providing-resources.html)谷歌表示,它主要用於電視(因此名稱),但至少似乎仍支持設備將始終使用的理論一個預定義的桶。 我在其他設備上做了一些更多的測試,它們都報告了一個window.devicePixelRatio,它完全對應於其中一個預定義的存儲桶。 –

相關問題