android開發中用到的px、dp、sp

來源:互聯網
上載者:User

標籤:

android開發中用到的px、dp、sp先介紹一下這幾個單位:

px : pixels(像素),對應螢幕上的實際像素點。

dip :device independent pixels,與密度無關的像素,基於螢幕密度的抽象單位。在每英寸160點的顯示器上,

1dp = 1px ,即1 :1關係。(dp 就是 dip)

sp : scaled pixels(放大像素).與密度和字型縮放度無關的像素。 主要用於字型顯示best for textsize。

由於android裝置螢幕雜亂,各種花樣寬度和高度多的不行,加上各種山寨。當開發出一套layout後,痛苦的事情來了,螢幕適配。

如何保證layout在不同解析度的螢幕下都能正常顯示呢?下面我們來簡單的分析一下android中一些常用的單位。


px(像素)是UI設計師在PS中切圖時使用的單位,手機螢幕中也同樣有該顯示單位。

dp是android中開發layout時使用的尺寸單位。

sp是開發layout時關於字型的字型大小單位,在設定字型單位為sp時,字型可隨螢幕尺寸而自動展開適應。


Android支援五種不同的dpi模式:ldpi、 mdpi、 hdpi、 xhdpi、 xxhdpi

一般地,手機解析度與所啟動並執行dpi模式是匹配的,也就是會根據螢幕的尺寸載入Res下不同的dpi檔案夾。

例如 HVGA(320x480像素)的手機螢幕一般在3.5英寸左右,運行在mdpi模式下(也有奇葩機子例外)

(這個是ROM控制的,app不能改變)。當運行在mdpi下時,1dp=1px:也就是說設計師在PS裡定義一個item高48px,開發時就會定義該item高48dp;Photoshop中14px大的字型,開發時會定義為14sp。

 

對於一部WVGA(480x800)手機,一般是運行在hdpi模式下。當運行在hdpi模式下時,

1dp=1.5px:也就是說設計師在PS裡定義一個item高72px,開發時就會定義該item高 48dp;

Photoshop中21px大的字型,開發會定義為14sp。


所以,當你的app需要適配多個dpi模式的時候(例如同時適配mdpi與hdpi),若你在WVGA下做設計(或者更高),你需要將各數值都為3的倍數,
並在切表徵圖注時將所有的數字( /3*2) 換算成dp,這樣開發的同一套layout就能用在兩個不同的dpi模式下,而不是寫兩套layout。

其中的比例:
mdpi與hdpi是2:3的關係
mdpi與 xhdpi是1:2的關係
ldpi與mdpi是3:4的關係
比如我的機子紅米,720 * 1280 的螢幕尺寸,就是運行在xhdpi下的。
一種例外,有些比較山寨的Pad有可能是7英寸螢幕,解析度為WVGA(480*800)運行在mdpi下。原文連結:http://blog.csdn.net/gao_chun/article/details/38293163

android開發中用到的px、dp、sp

聯繫我們

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