Android手機屏幕px與dp互轉的工具類
dp(dip): device independent pixels(設備獨立像素). 不同設備有不同的顯示效果,這個和設備硬件有關,一般我們?yōu)榱酥С諻VGA、HVGA和QVGA 推薦使用這個,不依賴像素。dp也就是dip,這個和sp基本類似。如果設置表示長度、高度等屬性時可以使用dp 或sp。但如果設置字體,需要使用sp。dp是與密度無關,sp除了與密度無關外,還與scale無關。如果屏幕密度為160,這時dp和sp和px是一 樣的。1dp=1sp=1px,但如果使用px作單位,如果屏幕大小不變(假設還是3.2寸),而屏幕密度變成了320。那么原來TextView的寬度 設成160px,在密度為320的3.2寸屏幕里看要比在密度為160的3.2寸屏幕上看短了一半。但如果設置成160dp或160sp的話。系統(tǒng)會自動 將width屬性值設置成320px的。也就是160 * 320 / 160。其中320 / 160可稱為密度比例因子。也就是說,如果使用dp和sp,系統(tǒng)會根據屏幕密度的變化自動進行轉換。
px: pixels(像素). 不同設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。
代碼如下:
import android.content.Context; public class DensityUtil { private static float scale; /** * 根據手機的分辨率從 dp 的單位 轉成為 px(像素) */ public static int dip2px(Context context, float dpValue) { if (scale == 0) { scale = context.getResources().getDisplayMetrics().density; } return (int) (dpValue * scale + 0.5f); } /** * 根據手機的分辨率從 px(像素) 的單位 轉成為 dp */ public static int px2dip(Context context, float pxValue) { if (scale == 0) { scale = context.getResources().getDisplayMetrics().density; } return (int) (pxValue / scale + 0.5f); } }
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
Android SwipeMenuListView框架詳解分析
這篇文章主要介紹了Android SwipeMenuListView框架詳解分析的相關資料,需要的朋友可以參考下2016-10-10android 中viewpager+fragment仿微信底部TAG完美漸變
這篇文章主要介紹了android 中viewpager+fragment仿微信底部TAG完美漸變,需要的朋友可以參考下2017-05-05Android studio將Module打包成Jar的方法
這篇文章主要介紹了Android studio將Module打包成Jar的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10Android動畫之逐幀動畫(Frame Animation)基礎學習
大家都知道逐幀動畫是一種常見的動畫形式,其原理是在“連續(xù)的關鍵幀”中分解動畫動作,也就是在時間軸的每幀上逐幀繪制不同的內容,使其連續(xù)播放而成動畫。下面我們就來學習下Android中逐幀動畫的基礎知識,有需要的可以參考借鑒。2016-09-09詳解Android中通過Intent類實現(xiàn)組件間調用的方法
Intent能夠實現(xiàn)應用間的數據交互與通訊,將實現(xiàn)者和調用者解耦,接下來就來詳解Android中通過Intent類實現(xiàn)組件間調用的方法,需要的朋友可以參考下2016-05-05Android開發(fā)手冊RatingBar星級評分控件實例
這篇文章主要為大家介紹了Android開發(fā)手冊RatingBar星級評分控件實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06