2014年5月14日 星期三

[Android] dp轉pixel(使用官方Method)



在開發Android Custom View的時候,常需要在程式碼中去設定View的大小,而Android程式碼的設定值,只能以pixel為單位,可是根據官方建議,元件大小用dp為主,而文字大小則用sp為主,因此需要一個將dp傳換成pixel的工具,不過還好官方有提供各種類型專換至pixel的函式:TypedValue.applyDimension (在android.util這個package下),這樣一來,就可以不用自己寫啦而且是官方提供的,所以可以安心服用XD。
以下是簡單的範例:


 
private float dpToPixel(Context context,int dp) {
  
  Resources resources = context.getResources();//取得系統資源
  
  float pixel = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, // 轉換單位:dp值
  dp, // 輸入的dp值
  resources.getDisplayMetrics());
  
  return pixel;
}


提供官方的說明當參考:

public static float applyDimension (int unit, float value, DisplayMetrics metrics)

Added in API level 1
Converts an unpacked complex data value holding a dimension to its final floating point value. The two parameters unit and value are as in TYPE_DIMENSION.
Parameters
unitThe unit to convert from.
valueThe value to apply the unit to.
metricsCurrent display metrics to use in the conversion -- supplies display density and scaling information.
Returns
  • The complex floating point value multiplied by the appropriate metrics depending on its unit.

沒有留言:

張貼留言