android中px與sp,dp之間的轉換

2021-08-19 16:11:18 字數 1319 閱讀 8820

android中px與sp,dp之間的轉換

原創 2023年12月17日 22:00:51 標籤:單位轉換 /螢幕解析度 /螢幕尺寸 /dpi 4552

由於android手機廠商很多,導致了不同裝置螢幕大小和解析度都不一樣,然而我們開發者要保持在不同裝置上顯示同樣的視覺效果,就需要做一些適配效果。 

相關名詞解釋 

螢幕大小:通常指的是螢幕對角線的長度,使用「寸」為單位來衡量。 

解析度:指手機螢幕的畫素點個數,例如:720*1280,指的是寬有720個畫素點,高有1280個畫素點。 

dpi:指的是每英吋畫素,是由對角線上的畫素點數除以螢幕大小所得。 

系統螢幕密度 

ldpi資料夾下對應的密度為120dpi,對應的解析度為240*320 

mdpi資料夾下對應的密度為160dpi,對應的解析度為320*480 

hdpi資料夾下對應的密度為240dpi,對應的解析度為480*800 

xhdpi資料夾下對應的密度為320dpi,對應的解析度為720*1280 

xxhdpi資料夾下對應的密度為480dpi,對應的解析度為1080*1920

由於各種螢幕密度的不同,導致了同一張在不同的手機螢幕上顯示不同;

在螢幕大小相同的情況下,高密度的螢幕包含了更多的畫素點。

android系統將密度為160dpi的螢幕作為標準對於mdpi資料夾,在此螢幕的手機上1dp=1px。

從上面系統螢幕密度可以得出各個密度值之間的換算;

在mdpi中1dp=1px,在hdpi中1dp=1.5px,在xhdpi中1dp=2px,在xxhpi中1dp=3px。

換算比例如下:ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12。

單位換算方法

/*** dp轉換成px

*/private int dp2px(context context,float dpvalue)

/*** px轉換成dp

*/private int px2dp(context context,float pxvalue)

/*** sp轉換成px

*/private int sp2px(context context,float spvalue)

/*** px轉換成sp

*/private int px2sp(context context,float pxvalue)

利用系統typevalue類來轉換

private int dp2px(context context,int dpvalue)

private int sp2px(context context,int spvalue)

布局檔案中的sp dp還有px的區別

眾所周知,android廠商非常多,各種尺寸的android手機 平板層出不窮。導致了android生態環境的碎片化現象越來越嚴重。google公司為了解決解析度過多的問題,在android的開發文件中定義了px dp sp,方便開發者適配不同解析度的android裝置。對於初級程式設計師來說理解掌...

Android之dip與px互轉

直接上碼,只為記錄 author jenly public class displayutils px轉dip param context param pxvalue return public static int px2dip context context,float pxvalue getd...

Android中dp和px之間進行轉換

在xml布局檔案中,我們既可以設定px,也可以設定dp 或者dip 一般情況下,我們都會選擇使用dp,這樣可以保證不同螢幕解析度的機器上布局一致。但是在 中,如何處理呢?很多控制項的方法中都只提供了設定px的方法,例如setpadding,並沒有提供設定dp的方法。這個時候,如果需要設定dp的話,就...