dp與px轉(zhuǎn)換

Dimension

dp(dip):

Density-independent Pixels,獨立密度像素。Android開發(fā)中常用dp來適配手機。Google規(guī)定,當1英寸屏幕上有160個像素點(px)時,此時1dp=1px=1dpi。Google引入dp的目的是android應(yīng)用,在不同尺寸、分辨率大小的手機上運行時,一個dp值可以讓Android系統(tǒng)自動挑選Android對應(yīng)屏幕尺寸資源。也就是說:dp值可以通過某種途徑,更具設(shè)備需求,得到相應(yīng)的圖片資源或者尺寸大小。

px:

Pixels,像素點。小時候家里面大屁股電視,肉眼可以看到一個一個點狀的東西就是像素點。

dpi:

dots per inch,像素密度。每一英寸(對角線長度)包含的像素點數(shù)除以160就是dpi。

dp、px和dpi關(guān)系:

據(jù)px = dip * density / 160,則當屏幕密度為160時,px = dip


在開發(fā)中,常用的幾種轉(zhuǎn)換方式:

1.利用像素密度

Display Metricsmetrics=newDisplay Metrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);

int youNeedPx=(int)(metrics.density*youNeedDp+0.5f);

類似于以前的常用做法:

/**

*?根據(jù)手機的分辨率從?dp?的單位?轉(zhuǎn)成為?px(像素)

*/

public static int dip2px(Context?context,float dpValue)?{

final float scale?=?context.getResources().getDisplayMetrics().density;

return (int)?(dpValue?*?scale?+0.5f);

}

/**

*?根據(jù)手機的分辨率從?px(像素)?的單位?轉(zhuǎn)成為?dp

*/

public static int px2dip(Context?context,float pxValue)?{

final float scale?=?context.getResources().getDisplayMetrics().density;

return (int)?(pxValue?/?scale?+0.5f);

}

2.利用系統(tǒng)API

2.1TypeValue

//將50dp轉(zhuǎn)為px

int defaultMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,50,getResources().getDisplayMetrics());

//源代碼如下

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

switch(unit) {

case COMPLEX_UNIT_PX:

return value;

//dip像素密度

case COMPLEX_UNIT_DIP:

return value * metrics.density;

case COMPLEX_UNIT_SP:

return value * metrics.scaledDensity;

//pt:point 印刷中 磅

case COMPLEX_UNIT_PT:

return value * metrics.xdpi* (1.0f/72);

case COMPLEX_UNIT_IN:

return value * metrics.xdpi;

case COMPLEX_UNIT_MM:

returnvalue * metrics.xdpi* (1.0f/25.4f);

}

return0;

}

2.2從資源文件中獲取

《?xmlversion="1.0" encoding="utf-8"?》

《resources》

《dimen name="thumbnail_height"》120dp《/dimen》

...

...

《/resources》

//將以上《換成<

Then in your Java:

getResources().getDimensionPixelSize(R.dimen.thumbnail_height);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容