日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中的长度单位详解

發布時間:2024/9/30 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中的长度单位详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/zuolongsnail/article/details/6397768

in(英寸)長度單位(基本用不到)
mm(毫米)長度單位(基本用不到)
pt(point磅)1/72英寸,標準的長度單位(基本用不到)

?

px(pixel像素)指的是屏幕上的點
dp(與密度無關的像素)一種基于屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp=1px
dip(device independent pixels設備獨立像素) 不同設備有不同的顯示效果,這個和設備硬件有關。
sp(scaled pixels放大像素)與dp類似,主要用于字體顯示(best for textsize)

?

dip和px的區別及其轉換
區別:
在DisplayMetrics.densityDpi=160的設備上,DisplayMetrics.density是等于1.0的(通過查看DisplayMetrics的SDK源代碼得知),此時1dip=1px。但是換到其他不同density的設備上,dip和px的大小就不一樣了,px在任何密度的設備上幾何長度都是一樣的,而dip會根據設備密度變化的。所以在開發中布局時盡量使用dip而少使用px。dpi表示每英寸像素數,讀者可以參考這篇文章:
(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的區別以及聯系
轉換:
dip和px之間的轉換很簡單,下面是dip和px的工具類。

[java]?view plaincopy
  • /**?
  • ?*?密度常量設置,提供dip轉換為px的方法?
  • ?*??
  • ?*?@author?zuolongsnail?
  • ?*??
  • ?*/??
  • public?final?class?DensityConst?{??
  • ????/**?默認密度?*/??
  • ????public?static?float?density?=?1.0f;??
  • ????/**?默認每英寸像素數?*/??
  • ????public?static?int?densityDpi?=?160;??
  • ??
  • ????/**?
  • ?????*?初始化與密度相關的所有變量值?
  • ?????*??
  • ?????*?@param?activity?
  • ?????*/??
  • ????public?static?void?initDensity(Activity?activity)?{??
  • ????????DisplayMetrics?dm?=?new?DisplayMetrics();??
  • ????????activity.getWindowManager().getDefaultDisplay().getMetrics(dm);??
  • ????????density?=?dm.density;??
  • ????????densityDpi?=?dm.densityDpi;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?dip轉化為像素?
  • ?????*??
  • ?????*?@param?dip?
  • ?????*?@return?
  • ?????*/??
  • ????public?static?int?getPx(int?dip)?{??
  • ????????return?(int)?(dip?*?density);??
  • ????????//?return?(int)(dip*(densityDpi/160));??
  • ??
  • ????}??
  • ??
  • ????/**?
  • ?????*?像素轉化為dip?
  • ?????*??
  • ?????*?@param?px?
  • ?????*?@return?
  • ?????*/??
  • ????public?static?int?getDip(int?px)?{??
  • ????????return?(int)?(px?/?density);??
  • ????????//?return?(int)((px*160)/densityDpi);??
  • ????}??
  • }??
  • http://bbs.chinaunix.net/thread-3638322-1-1.html

    • Screen size (屏幕尺寸):具體的屏幕物理長度,以對角線長度做為標識,平時我們說的3”屏,7”屏就是指這個,是物理尺寸
    • Resolution (分辨率):屏幕上總共的物理像素點,雖然經常被以800X600之類的來描述,但是在android中,他并不指代具體的屏幕寬高比例,注意,分辨率和屏幕大小沒有任何聯系,分辨率只是描述點的而已,所以相同分辨率下,屏幕越小,越清晰
    • density(密度) :表示每英寸有多少個顯示點,density是以分辨率為基礎,即指在固定分辨率上散開的像素點,也即是說屏幕的density越大,單位上分散的像素就越多,可以理解為點距就越小,這樣如果某個元素是以px為單位的,那么在低密度的屏幕上就會變大,應用程序可以通過指定high-dpi等三種資源來實現平臺的獨立性
    • 另外和android平臺相關的還有的概念:
      • ASPECT RATIO (寬高比例):也就是平時我們說的4比3之流
      • Density-independent pixel(dip):dip是一種虛擬的像素單位,專門用來給程序定義UI用,Android高度推薦使用這個,可以為不同的dip設置不同的資源進行自動切換 pixels = dips * (density / 160)即dip相當于屏幕density=160時的一個像素點,density=160時是一個點顯示一個像素,而density=240時是3個點顯示兩個像素,圖像看起來大一些,真實像素只有1280*2/3px,800*2/3px。
      • (同一寬度(2英寸)的屏幕,但是一個像素數是360,density = 160,另一個屏幕的像素是720,density=360;如果要畫160dip的線條,對于第一個屏幕就是劃了160個像素,占屏幕一般,第二個屏幕就是劃了320個像素,也占屏幕的一半)
      • Dot per inch(DPI) : 就是一英寸上顯示的點,而這個點并不是意義上的像素。 一般來說,顯示器是96DPI,也就是說96像素等于1inch,但實際上不應該是這樣,因為顯示器的分辨率可以調整。 對于你上面所說的顯示器設置,96DPI可以理解為用96象素來表示一英寸,而變成120DPI的時候,是用120像素來表示一英寸,而系統的對象(字體,圖像)的是用英寸數來表示的,所以120DPI時,圖象和字體就變大了。

        就是一英寸上顯示的點,而這個點并不是意義上的像素。?一般來說,顯示器是96DPI,也就是說96像素等于1inch,但實際上不應該是這樣,因為顯示器的分辨率可以調整。
        對于你上面所說的顯示器設置,96DPI可以理解為用96象素來表示一英寸,而變成120DPI的時候,是用120像素來表示一英寸,而系統的對象(字體,圖像)的是用英寸數來表示的,所以120DPI時,圖象和字體就變大了。

      • 色階 :也就是平時我們說的 65536色,26萬色,1600萬色并沒有數字看起來差別那么大,這實際上只是表示相鄰的三個色階而已,當然,1600萬色顯示效果是最好的

    總結

    以上是生活随笔為你收集整理的Android中的长度单位详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。