Sean's Note: 將 dip 轉換成 pixel

2013年7月25日 星期四

將 dip 轉換成 pixel

在 Android 手機裡,我們大都用 DIP(Density Independent Pixel unit) 來設計 UI 而非 pixel 值,
這時想將 DIP 轉換為 pixel,可直接套用下列的函式。
 
public int convertDIPtoPixel(int dp)
{
  final float scale = getResources().getDisplayMetrics().density;
  int pixels = (int) (dp * scale + 0.5f);
  return pixels;
}

公式: density = dpi/160, px = dp * density
density 是指每 dpi 代表多少 pixel,在 160 dpi 的裝置上,1 dpi = 1 pixel,density 為 1;
在 320 dpi 的裝置上,1 dpi = 2 pixel,所以 density 為 2。

詳見: http://developer.android.com/reference/android/util/DisplayMetrics.html#density

沒有留言:

張貼留言