將dp和px轉(zhuǎn)化成對(duì)應(yīng)的px數(shù)值

實(shí)例:

int padding =4;

padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4,

context.getResources().getDisplayMetrics());

解釋:

padding的單位是:dip, padding的大小是:4

雖然是4dip,但是,不是最終padding的真實(shí)單位。

他是通過(guò)計(jì)算以后,4dp和密度系數(shù)相乘得到的一個(gè)值,實(shí)際上計(jì)算出來(lái)的padding單位是像素,也就是它的寬度。在不同dpi的屏幕上,這個(gè)值是不一樣的。

即:將dp轉(zhuǎn)化為px,返回的是一個(gè)dp對(duì)應(yīng)的px數(shù)值。

如果這里是COMPLEX_UNIX_SP,就是講sp轉(zhuǎn)化為dp。

單位間的轉(zhuǎn)換就用這個(gè)方法,可以將其封裝成一個(gè)工具方法。

進(jìn)一步理解:

applyDimension方法是將4像素轉(zhuǎn)換為6dp(480x800)、4dp(320x800)、3dp(240x320), 所以返回的值對(duì)應(yīng)不同的分辨率(通過(guò)getDisplayMetrics就得到了)就是6、4、3

源代碼:

public static float applyDimension(int unit, float value,

DisplayMetrics metrics)

{

switch (unit) {

case COMPLEX_UNIT_PX:

return value;

case COMPLEX_UNIT_DIP:

return value * metrics.density;

case COMPLEX_UNIT_SP:

return value * metrics.scaledDensity;

case COMPLEX_UNIT_PT:

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

case COMPLEX_UNIT_IN:

return value * metrics.xdpi;

case COMPLEX_UNIT_MM:

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

}

return 0;

}

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

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

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