這篇主要介紹各單位轉px

dp轉px, sp轉px, pt轉px, in轉px, mm轉px的方法

而單位不熟的可以參考[Android] 5-1 單位介紹 - dp, dip, dpi, sp, pt, px, mm, in

 

1. 主要是用官方的TypedValue的applyDimension (int unit, float value, DisplayMetrics metrics)

unit 是 要被轉換值的單位

value 是 要被轉換的值

metrics 是 螢幕的資訊metrics

可以參考官網http://developer.android.com/reference/android/util/TypedValue.html#applyDimension(int,%20float,%20android.util.DisplayMetrics)

01.png

 

2. 接著創一個新專案, 連到applyDimension的methid,

可以看到他的公式,

而第一個參數單位就如下所示

COMPLEX_UNIT_PX:
COMPLEX_UNIT_DIP:
COMPLEX_UNIT_SP:
COMPLEX_UNIT_PT:
COMPLEX_UNIT_IN:
COMPLEX_UNIT_MM:

02.png

 

3. 假設要知道 20dp 在該螢幕下是 ? px

使用方法如下

float px = TypedValue.applyDimension(
  TypedValue.COMPLEX_UNIT_DIP, //原本單位的類別
  20, //原本單位的值
  getResources().getDisplayMetrics()); //現在銀幕的 metrics

03.png

 

4. 最後log會秀出在該螢幕下20dp 約等於 26px

04.png

 

最後可以參考網路的一些文章

Tony的 教你如何dp和px互相轉換

http://blog.tonycube.com/2013/07/android-dp-px-dp-px-exchange.html

stackoverflow上相關的討論議題, 可以看看不同的轉換方法

http://stackoverflow.com/questions/4605527/converting-pixels-to-dp

 

arrow
arrow

    RX1226 發表在 痞客邦 留言(0) 人氣()