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的話,就...