Android裝置解析度,密度以及dp

來源:互聯網
上載者:User

  為解決Android裝置片段化,引入一個概念density,也就是密度.它指的是在一定尺寸的物理螢幕上顯示像素的數量,一般使用dpi(dots per inch,每英吋像素數)作為單

  位.比如裝置解析度為240x320,螢幕物理尺寸為1.5英寸x2英寸(對角線為2.5)它的密度可以用解析度/尺寸表示:240/1.5或者即320/2,密度為160dpi。算對角線也是一樣

  的,長的平方+寬的平方=160000,開方後=400.可知400/2.5=160.對於使用者來說,密度越大的螢幕顯示效果越精細,因為每英寸顯示的像素數量更多。

  以上的描述就是一個藍本(此藍本對應於mdpi).

  按照此藍本一個dp相當於160dpi螢幕中的一個px.同理在,在320dpi的螢幕中,一個dp相當於2個px.

  通過這樣的成比例放縮,Android解決了需要多個不同螢幕中的大小顯示問題.

  所以在Eclipse的布局檔案中,以3.7in WVGA(Nexus One)(480x800)為例,可以看見其為sw320dp,h533dp.

  即寬有320dp,高為533dp.

  是怎麼計算出來的呢?

  將(480的平方+800的平方)開方=932.9523031

  然後932.9523031/螢幕尺寸3.7=252.14927,此結果為此手機的螢幕密度.

  然後按照上面的藍本,就應該要計算在該手機上1dp對於多少px.計算如下:

  160 1dp=1px

  252.14927 1dp=?px

  結果為:

  252.14927/160=1.5759329

  注意:

  在此一般不取1.5759329,只取到1.5即可.

  所以:480/1.5=320;800/1.5=533.3333(通常取為533),即上述的sw320dp,h533dp.

  手機螢幕密度的對應關係

  120上下浮動的都屬於ldpi

  160上下浮動的都屬於mdpi

  240上下浮動的都屬於hdpi

  320上下浮動的都屬於xdpi

  以摩托羅拉ME525+(3.7英寸 解析度854x480像素)為例:

  將(480的平方+854的平方)開方=979.6509

  然後979.6509/螢幕尺寸3.7=264.770529,此結果為此手機的螢幕密度.對應為hdpi

  264.770529/160=1.6548

  即在此手機中1dp=1.6548個像素,只取到1.6即可

  所以:480/1.6=300;854/1.6=533.75(通常取為533)

  按照這個邏輯,算出來的寬應該是只有300dp.悲劇的是,如果某個控制項的寬為300,在此手機上是不能鋪滿手機的寬的.

  也就是說除以的不是1.6而還是1.5!!!!所以將寬設定為320即可

  總結:在hdpi中,像素轉換為dp統一用的是:像素/1.5

  以聯想K860(5.0英寸,解析度1280x720像素)為例:

  將(1280的平方+720的平方)開方=1468.60478

  然後1468.60478/螢幕尺寸5=293.720,此結果為此手機的螢幕密度.對應為xdpi

  293.720/160=1.8357

  即在此手機中1dp=1.8357個像素

  所以:1280/1.8357=697.281;720/1.8357=392.22

  按照這個邏輯,算出來的寬應該是392.22.悲劇的是,如果某個控制項的寬為392.22,在此手機上是顯示不完全的.

  也就是說除以的不是1.8而是2!!!!所以將寬設定為360即可

  總結:在xdpi中,像素轉換為dp統一用的是:像素/2

  注意問題1:

  在建立模擬器的時候注意

  854x480在Hardware中,應該將Abstracted LCD density設定為240,並手動輸入解析度

  1280x720在Hardware中,應該將Abstracted LCD density設定為320,並手動輸入解析度

  注意問題2:

  多個layout檔案夾在命名上有相應規則,以解析度480x854為例,需要建立480x854像素的layout檔案夾,命名:layout-854x480,有兩點需要注意:①大數(854)必須在前,

  否則會報錯;②兩個數字之間的符號是小寫英文字母“x”,不是乘號

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.