Android中dip(dp)與px之間單位轉換
dp這個單位可能對web開發的人比較陌生,因為一般都是使用px(像素)
但是,現在在開始android應用和游戲后,基本上都轉換成用dp作用為單位了,因為可以支持多種分辨率的手機.
以下是這兩個單位的概念:
px (pixels)像素 –一個像素通常被視為圖像的最小的完整采樣,這個用的比較多,特別是web開發,頁面基本都是使用像素作為單位的.
dip或dp (device independent pixels)設備獨立像素 — 這個和設備硬件有關,一般我們為了支持手機上多種分辨率,如WVGA、HVGA和QVGA,都會使用dip作為長度的單位
在Android開發我們一般都可以不需要使用px的,但是某一些控件的屬性沒有直接支持dip,像下面的代碼
android.view.ViewGroup.LayoutParams.height
android.view.ViewGroup.LayoutParams.width上面這兩個屬性的單位為像素,但是為了兼容多種分辨率的手機,我們需要最好使用dip,時候我們可以調用以下的代碼進行轉換.
int heightPx= DisplayUtil.dip2px(this, 33);
mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height = heightPx;
以上代碼可以在我另一篇文章看得到.該功能是設置Tab的高度,單位是像素.以上的單位轉換是為了支持多分辨率手機的.
該文章的地址 : [Android中TabHost的使用]
/**
* 根據手機的分辨率從 dp 的單位 轉成為 px(像素)
*/
public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); }
/**
* 根據手機的分辨率從 px(像素) 的單位 轉成為 dp
*/
public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); }
from:http://blog.csdn.net/gf771115/article/details/8230176