Android中dp、sp、px的轉換和區別。

來源:互聯網
上載者:User

apk的資源套件中

當螢幕density=240時,使用hdpi 標籤的資源 當螢幕density=160時,使用mdpi標籤的資源 當螢幕density=120時,使用ldpi標籤的資源。 不加任何標籤的資源是各種解析度情況下共用的。 布局時盡量使用單位dip,少使用px

 

dp與px換算公式:

pixs =dips * (densityDpi/160). 

dips=(pixs*160)/densityDpi

 

/**
  * 根據手機的解析度從 dp 的單位 轉成為 px(像素)
  */
 public static int dip2px(Context context, float dpValue) {
  final float scale = context.getResources().getDisplayMetrics().density;
  return (int) (dpValue * scale + 0.5f);
 } 

 

dp與px轉換的方法:

public static int dip2px(Context context, float dipValue){   final float scale = context.getResources().getDisplayMetrics().density;   return (int)(dipValue * scale +0.5f); }
public static int px2dip(Context context, float pxValue){   final float scale = context.getResource().getDisplayMetrics().density;   return (int)(pxValue / scale +0.5f); }

 

 

名詞

解釋

Px

(Pixel像素)

不同裝置顯示效果相同。這裡的“相同”是指像素數不會變,比如指定UI長度是100px,那不管解析度是多少UI長度都是100px。也正是因為如此才造成了UI在小解析度裝置上被放大而失真,在大解析度上被縮小。

Screen Size

(螢幕尺寸)

一般所說的手機螢幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的對角線的長度,而不是手機面積。我們可以根據勾股定理擷取手機的寬和長,當然還有面積。

Resolution

(解析度)

指手機螢幕垂直和水平方向上的像素個數。比如解析度是480*320,則指裝置垂直方向有480個像素點,水平方向有320個像素點。

Dpi

(dots per inch

  像素密度)

指每英寸中的像素數。如160dpi指手機水平或垂直方向上每英寸距離有160個像素點。假定裝置解析度為320*240,螢幕長2英寸寬1.5英寸,dpi=320/2=240/1.5=160

注意:該值對應於DisplayMetrics類中屬性densityDpi的值

Density

(密度)

指每平方英寸中的像素數。

Density=Resolution/Screen size

注意:在DisplayMetrics類中屬性density的值為dpi/160,可用於px與dip的互相轉換

Dip

(Device-independent pixel,裝置獨立像素)

同dp,可作長度單位,不同裝置有不同的顯示效果,這個和裝置硬體有關,一般我們為了支援WVGA、HVGA和QVGA 推薦使用這個,不依賴像素。dip和具體像素值的對應公式是dip值 =裝置密度/160* pixel值,可以看出在dpi(像素密度)為160dpi的裝置上1px=1dip

Sp

(ScaledPixels

 放大像素)

主要用於字型顯示(best for textsize)。根據 google 的建議,TextView 的字型大小最好使用 sp 做單位,而且查看TextView的源碼可知 Android 預設使用 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.