Android 中dpi 、 dip 、分辨率、屏幕尺寸、px、density 關係以及換算

原文地址:http://www.cnblogs.com/yaozhongxiao/archive/2014/07/14/3842908.htmlhtml

1、基本概念

  • dip        :device independent pixels(設備獨立像素),不一樣設備有不一樣的顯示效果,這個和設備硬件有關。它跟屏幕密度有關,若是屏幕密度大,1dip表明的px就多,好比在320dpi的屏幕上,1dip=2px。
    android

  • dp        :就是dip。佈局

  • px        : 像素。字體

  • dpi       :dots per inch, 直接來講就是一英寸多少個像素點。常見取值 120,160,240。我通常稱做像素密度, 簡稱密度spa

  • density : 直譯叫密度。常見取值 1.5 , 1.0 。和標準dpi的比例(160px/inc)。code

  • 分辨率   : 橫縱2個方向的像素點的數量,是指屏幕上垂直方向和水平方向上的像素個數。常見取值 480X800 ,320X480。orm

  • 屏幕尺寸: 屏幕對角線的長度。htm

  • pt           : point,是一個標準的長度單位,1pt=1/72英寸,用於印刷業,很是簡單易用;blog

  • sp           : scaled pixels(放大像素). 主要用於字體顯示best for textsize。ip

  • in            :(英寸)長度單位。 

2、應用

    在android裏面,獲取一個窗口的metrics,裏面有這麼幾個值

     metrics.density; 
     metrics.densityDpi;

  densityDpi : 就是咱們常說的dpi。

  density      :  實際上是 DPI / (160像素/英寸) 後獲得的值。是否是有點奇怪,由於我帶了單位。。。這個涉及到後面一個比較重要的東西,後面再說。

  從上面就看得出了,DPI自己的單位也是 像素/英寸,因此density實際上是沒單位的,他就是一個比例值。

  而dpi的單位是 像素/英寸,比較符合物理上面的密度定義,密度不都是單位度量的值麼,因此我更喜歡把dpi叫像素密度,簡稱密度,density仍是就叫density。

3、計算

一、px與dp

    咱們寫佈局的時候,確定仍是要知道1個dp到底有多少px的。

 換算公式以下: dp = (DPI/(160像素/英寸))px = density px

 注意,這裏都是帶單位的。px是單位,dp是單位,density沒單位。

 爲了方便,假設dpi是240 像素/英寸 , 那麼density就是1.5

 那麼就是 dp=1.5px ,注意這是帶了單位的,也就是 設備無關像素 = density 像素

 那麼轉換爲數值計算的話,應該是下面這個式子

 px = density * dp

相關文章
相關標籤/搜索