(轉(zhuǎn)載)dpi 狼忱、 dip 、分辨率一睁、屏幕尺寸钻弄、px、density 關(guān)系以及換算

轉(zhuǎn)載自:dpi 者吁、 dip 窘俺、分辨率、屏幕尺寸复凳、px瘤泪、density 關(guān)系以及換算
不論是否被發(fā)現(xiàn),一切榮譽歸屬于大佬育八。

一对途、基本概念

  • dip : Density independent pixels ,設(shè)備無關(guān)像素髓棋。
  • dp :就是dip
  • px : 像素
  • dpi :dots per inch 实檀, 直接來說就是一英寸多少個像素點。常見取值 120按声,160膳犹,240。我一般稱作像素密度签则,簡稱密度
  • density : 直接翻譯的話貌似叫 密度须床。常見取值 1.5 , 1.0 渐裂。和標(biāo)準(zhǔn)dpi的比例(160px/inc)
  • 分辨率 : 橫縱2個方向的像素點的數(shù)量豺旬,常見取值 480X800 ,320X480
  • 屏幕尺寸: 屏幕對角線的長度芯义。電腦電視同理哈垢。
  • 屏幕比例的問題。因為只確定了對角線長扛拨,2邊長度還不一定耘分。所以有了4:3、16:9這種,這樣就可以算出屏幕邊長了求泰。

二央渣、應(yīng)用

在android里面,獲取一個窗口的metrics渴频,里面有這么幾個值

metrics.density; 
metrics.densityDpi;
  • densityDpi : 就是我們常說的dpi芽丹。
  • density : 其實是 DPI / (160像素/英寸) 后得到的值。是不是有點奇怪卜朗,因為我?guī)Я藛挝话蔚凇!3《ぁ_@個涉及到后面一個比較重要的東西蚊俺,后面再說。

從上面就看得出了逛万,DPI本身的單位也是 像素/英寸泳猬,所以density其實是沒單位的,他就是一個比例值宇植。

而dpi的單位是 像素/英寸得封,比較符合物理上面的密度定義,密度不都是單位度量的值么指郁,所以我更喜歡把dpi叫像素密度忙上,簡稱密度,density還是就叫density坡氯。

三晨横、各單位間轉(zhuǎn)換

  1. 計算dpi

比如一個機器,屏幕4寸箫柳,分辨率480X800手形,他的dpi能算么。
因為不知道邊長悯恍,肯定不能分開算库糠,4是對角線長度,那直接用勾股定理算對角線像素涮毫,除以4瞬欧,算出來大概是 dpi = 233 像素/英寸。
那么density就是 (233 px/inch)/(160 px/inch)=1.46 左右

順帶說下罢防,android默認的只有3個dpi艘虎,low、medium和high咒吐,對應(yīng) 120野建、160属划、240,如果沒有特別設(shè)置候生,所有的dpi都會被算成這3個同眯,具體可以參考下這個帖子http://android.tgbus.com/Android/tutorial/201103/347176.shtml
其中的default就是160。

  1. 計算 dp 與 px

我們寫布局的時候唯鸭,肯定還是要知道1個dp到底有多少px的须蜗。
換算公式如下:

dp = (DPI/(160像素/英寸))px = density px

注意,這里都是帶單位的目溉。px是單位明肮,dp是單位,density沒單位停做。
為了方便晤愧,假設(shè)dpi是240 像素/英寸 大莫, 那么density就是1.5
那么就是 dp=1.5px 蛉腌,注意這是帶了單位的,也就是 設(shè)備無關(guān)像素 = density 像素
那么轉(zhuǎn)換為數(shù)值計算的話只厘,應(yīng)該是下面這個式子

  PX = density * DP

也就是

像素值 = density * 設(shè)備無關(guān)像素值 
  1. 為啥 標(biāo)準(zhǔn)dpi = 160

(1)Android Design [1] 里把主流設(shè)備的 dpi 歸成了四個檔次烙丛,120 dpi、160 dpi羔味、240 dpi河咽、320 dpi

實際開發(fā)當(dāng)中,我們經(jīng)常需要對這幾個尺寸進行相互轉(zhuǎn)換(比如先在某個分辨率下完成設(shè)計赋元,然后縮放到其他尺寸微調(diào)后輸出)忘蟹,一般按照 dpi 之間的比例即 2:1.5:1:0.75   來給界面中的元素來進行尺寸定義。

也就是說如果以 160 dpi 作為基準(zhǔn)的話搁凸,只要尺寸的 DP 是 4 的公倍數(shù)媚值,XHDPI 下乘以 2,HDPI 下乘以 1.5护糖,LDPI 下乘以 0.75 即可滿足所有尺寸下都是整數(shù) pixel 褥芒。

但假設(shè)以 240 dpi 作為標(biāo)準(zhǔn),那需要 DP 是 3 的公倍數(shù)嫡良,XHDPI 下乘以 1.333锰扶,MDPI 下乘以 0.666 ,LDPI 下除以 2

而以 LDPI 和 XHDPI 為基準(zhǔn)就更復(fù)雜了寝受,所以選擇 160 dpi

(2)這個在Google的官方文檔中有給出了解釋坷牛,因為第一款A(yù)ndroid設(shè)備(HTC的T-Mobile G1)是屬于160dpi的。

四很澄、 示例分析

  1. 屏幕尺寸(screen size)

就是我們平常講的手機屏幕大小京闰,是屏幕的對角線長度锨亏,一般講的大小單位都是英寸。
比如iPhone5S的屏幕尺寸是4英寸忙干。Samsung Note3是5.7英寸器予。


圖 1
  1. 像素(pixel)

想像把屏幕放大再放大,對捐迫!看到的那一個個小點或者小方塊就是像素了乾翔。


圖 2

3.分辨率(Resolution)

是指屏幕上垂直方向和水平方向上的像素個數(shù)。
比如iPhone5S的分辨率是1136640施戴;Samsung Note3的分辨率是19201080反浓;

圖 3
  1. dpi

是dot per inch的縮寫,就是每英寸的像素數(shù)赞哗,也叫做屏幕密度雷则。這個值越大,屏幕就越清晰肪笋。
iPhone5S的dpi是326月劈; Samsung Note3 的dpi是386

圖 4

5. dip

是Density independent pixel的縮寫,指的是抽象意義上的像素藤乙。跟設(shè)備的屏幕密度有關(guān)系猜揪。

它是Android里的一個單位,dip和dp是一樣的坛梁。

Google的官方說明是這樣的:
Density-independent pixel (dp)

A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density-independent way.

The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen. At runtime, the system transparently handles any scaling of the dp units, as necessary, based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application's UI, to ensure proper display of your UI on screens with different densities.

就是說在160dpi的屏幕上而姐,1dip=1px。
  它跟屏幕密度有關(guān)划咐,如果屏幕密度大拴念,1dip代表的px就多,比如在320dpi的屏幕上褐缠,1dip=2px政鼠。

為什么我們在布局的時候最好要用dip,不要用px送丰?

是因為這個世界上存在著很多不同屏幕密度的手機缔俄,屏幕密度是什么?就是dpi器躏,就是單位長度里的像素數(shù)量俐载。
想象一下,如果這些手機的尺寸一樣登失,屏幕密度相差很大遏佣,那么是不是說一個手機水平方向上像素很少,另一個手機水平方向上像素很多揽浙?那我們畫同樣pix數(shù)量的時候状婶,它顯示的長度不就會不一樣了意敛?
比如下面圖中的兩個手機,同時設(shè)置2px長度的Button膛虫,在屏幕密度較高的手機里就會顯示的比較小草姻。
而同時設(shè)置的2dip長度的Button,在兩個手機上顯示的大小是一樣的稍刀。

圖 5

所以如果你在App布局中都用的px作為單位撩独,那么你的App跑在各個設(shè)備上就會出現(xiàn)奇奇怪怪的現(xiàn)象了。

來看一下emulator上的效果账月,我定義了兩個Button综膀,分別用px和dip做單位。

布局文件里這樣寫

<Button android:layout_width="100px"
    android:layout_height="100px"
    android:text="@string/str_button1"/>
 
    <Button android:layout_width="100dip"
    android:layout_height="100dip" 
    android:text="@string/str_button1"/>

顯示的界面是這樣的:

圖 6

getResources().getDisplayMetrics().densityDpi 就是屏幕密度局齿。
getResources().getDisplayMetrics().density 也可以理解為1dip相當(dāng)于多少個px啦剧劝。
上面的dpi是240,1dip=1.5px
你看抓歼,100dip的Button是100pxButton的1.5倍長吧讥此。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锭部,隨后出現(xiàn)的幾起案子暂论,更是在濱河造成了極大的恐慌,老刑警劉巖拌禾,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異展哭,居然都是意外死亡湃窍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門匪傍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來您市,“玉大人,你說我怎么就攤上這事役衡∫鹦荩” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵手蝎,是天一觀的道長榕莺。 經(jīng)常有香客問我,道長棵介,這世上最難降的妖魔是什么钉鸯? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮邮辽,結(jié)果婚禮上唠雕,老公的妹妹穿的比我還像新娘贸营。我一直安慰自己,他們只是感情好岩睁,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布钞脂。 她就那樣靜靜地躺著,像睡著了一般捕儒。 火紅的嫁衣襯著肌膚如雪芳肌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天肋层,我揣著相機與錄音亿笤,去河邊找鬼。 笑死栋猖,一個胖子當(dāng)著我的面吹牛净薛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒲拉,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肃拜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雌团?” 一聲冷哼從身側(cè)響起燃领,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锦援,沒想到半個月后猛蔽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡灵寺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年曼库,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片略板。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡毁枯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叮称,到底是詐尸還是另有隱情种玛,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布瓤檐,位于F島的核電站赂韵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏距帅。R本人自食惡果不足惜右锨,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碌秸。 院中可真熱鬧绍移,春花似錦悄窃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞬测,卻和暖如春横媚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背月趟。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工灯蝴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人孝宗。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓穷躁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親因妇。 傳聞我的和親對象是個殘疾皇子问潭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容