隨筆 - 33, 文章 - 0, 評論 - 12, 引用 - 0
          數據加載中……

          Android中關于dip和px以及轉換的總結

          我們在頁面布局的時候,經常會設置容器的長度,但是到底該使用哪個作為長度的單位而懊惱。在Android中支持的描述大小區(qū)域的類型有以下幾種:

          px(pixels)——像素:不同的設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。

          dip(device independent pixels)——設備獨立像素:這個和設備硬件有關,一般我們?yōu)榱酥С諻CGA、HVGA和QVGA推薦使用這個,不依賴于像素。等同于dp。

          sp(scaled pixels—best for text size)——帶比例的像素。

          pt(points)——磅:1pt = 1/72英寸

          in(inches)——英寸

          mm(millimeters)——毫米

          到底px和dip有什么區(qū)別呢?

          dip != px

          主要是針對不同設備而言的。在Density是160的設備上,比如用AVDManager創(chuàng)建的默認模擬器,dip和px是一樣的但是如果同樣的代碼,換到不同Density的設備上,比如換到一個Density是240的設備上,dip和px體現出來的大小就不一樣了。px不管在什么樣的設備上都是那樣長,但是dip會根據設備變化;WQVGA屏density=120;QVGA屏density=120;HVGA屏density=160;WVGA屏density=240;density值表示每英寸有多少個顯示點,與分辨率是兩個概念。

          當屏幕density=240時使用hdpi標簽的資源
          當屏幕density=160時,使用mdpi標簽的資源
          當屏幕density=120時,使用ldpi標簽的資源。

          不加任何標簽的資源是各種分辨率情況下共用的。布局時盡量使用單位dip,少使用px。

          換算公式為:
          pixs =dips * (densityDpi/160). 
          dips=(pixs*160)/densityDpi

          如何獲得設備的屏幕分辨率和屏幕密度?
          例如分辨率為480*800,密度為240的設備,方法如下


          DisplayMetrics dm =getResources().getDisplayMetrics();
          dm.densityDpi=240
          dm.widthPixels=480
          dm.heightPixels=800

          posted on 2013-02-01 10:08 建華 閱讀(5002) 評論(2)  編輯  收藏

          評論

          # re: Android中關于dip和px以及轉換的總結 [未登錄]  回復  更多評論   

          eeeeeeeee
          2014-05-07 15:39 | w

          # re: Android中關于dip和px以及轉換的總結   回復  更多評論   

          re: Android中關于dip和px以及轉換的總結

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 宁化县| 龙泉市| 桦南县| 英德市| 石首市| 孟州市| 四川省| 米脂县| 天门市| 冀州市| 北碚区| 安义县| 商城县| 海原县| 微山县| 韩城市| 湾仔区| 鸡东县| 桑植县| 兰西县| 合肥市| 临海市| 林甸县| 定西市| 吉木萨尔县| 迭部县| 平舆县| 夏津县| 天镇县| 阳春市| 丰县| 乌审旗| 屯门区| 商水县| 汶川县| 威宁| 济宁市| 巫山县| 白河县| 灵武市| 泰顺县|