android開發中用到的px、dp、sp
先介紹一下這幾個單位:
Android支援五種不同的dpi模式:ldpi、 mdpi、 hdpi、 xhdpi、 xxhdpi
所以,當你的app需要適配多個dpi模式的時候(例如同時適配mdpi與hdpi),若你在WVGA下做設計(或者更高),你需要將各數值都為3的倍數,
並在切圖示註時將所有的數字( /3*2) 換算成dp,這樣開發的同一套layout就能用在兩個不同的dpi模式下,而不是寫兩套layout。
其中的比例:
mdpi與hdpi是2:3的關係
mdpi與 xhdpi是1:2的關係
ldpi與mdpi是3:4的關係
比如我的機子紅米,720 * 1280 的螢幕尺寸,就是執行在xhdpi下的。
一種例外,有些比較山寨的Pad有可能是7英寸螢幕,解析度為WVGA(480*800)執行在mdpi下。
px : pixels(畫素),對應螢幕上的實際畫素點。
dip :device independent pixels,與密度無關的畫素,基於螢幕密度的抽象單位。在每英寸160點的顯示器上,
1dp = 1px ,即1 :1關係。(dp 就是 dip)
sp : scaled pixels(放大畫素).與密度和字型縮放度無關的畫素。 主要用於字型顯示best for textsize。由於android裝置螢幕雜亂,各種花樣寬度和高度多的不行,加上各種山寨。當開發出一套layout後,痛苦的事情來了,螢幕適配。
如何保證layout在不同解析度的螢幕下都能正常顯示呢?下面我們來簡單的分析一下android中一些常用的單位。
px(畫素)是UI設計師在PS中切圖時使用的單位,手機螢幕中也同樣有該顯示單位。
dp是android中開發layout時使用的尺寸單位。
sp是開發layout時關於字型的字號單位,在設定字型單位為sp時,字型可隨螢幕尺寸而自動拉伸適應。
Android支援五種不同的dpi模式:ldpi、 mdpi、 hdpi、 xhdpi、 xxhdpi
一般地,手機解析度與所執行的dpi模式是匹配的,也就是會根據螢幕的尺寸載入Res下不同的dpi資料夾。
例如 HVGA(320x480畫素)的手機螢幕一般在3.5英寸左右,執行在mdpi模式下(也有奇葩機子例外)
(這個是ROM控制的,app不能改變)。當執行在mdpi下時,1dp=1px:也就是說設計師在PS裡定義一個item高48px,開發時就會定義該item高48dp;Photoshop中14px大的字型,開發時會定義為14sp。
對於一部WVGA(480x800)手機,一般是執行在hdpi模式下。當執行在hdpi模式下時,
1dp=1.5px:也就是說設計師在PS裡定義一個item高72px,開發時就會定義該item高 48dp;
Photoshop中21px大的字型,開發會定義為14sp。
所以,當你的app需要適配多個dpi模式的時候(例如同時適配mdpi與hdpi),若你在WVGA下做設計(或者更高),你需要將各數值都為3的倍數,
並在切圖示註時將所有的數字( /3*2) 換算成dp,這樣開發的同一套layout就能用在兩個不同的dpi模式下,而不是寫兩套layout。
其中的比例:
mdpi與hdpi是2:3的關係
mdpi與 xhdpi是1:2的關係
ldpi與mdpi是3:4的關係
比如我的機子紅米,720 * 1280 的螢幕尺寸,就是執行在xhdpi下的。
一種例外,有些比較山寨的Pad有可能是7英寸螢幕,解析度為WVGA(480*800)執行在mdpi下。
相關文章
- Android中dip(dp)、dpi、ppi、px、density、sp的概念Android
- 關於dp、px的換算
- 開發一款Android APP所用到的工具AndroidAPP
- 開發中經常使用到的Xcode快捷鍵XCode
- 【笛卡爾樹+DP】【SP3734】 PERIODNI - Periodni
- Android 開發中的SSL pinningAndroid
- Android Studio中NDK開發Android
- Android開發中的Kotlin Coroutine VS RxJavaAndroidKotlinRxJava
- Android開發:在Eclipse中配置Android環境AndroidEclipse
- 好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !Kotlin套件Android
- Android 開發中 getContext 和 getActivity的區別AndroidContext
- Android開發中API層的最佳實踐AndroidAPI
- Android開發中陰影效果的實現Android
- 在 Android O 上用到 MediaStyle 的提醒功能AndroidAST
- 18 個實時音視訊開發中會用到開源專案
- 18個實時音視訊開發中會用到開源專案
- css中的px、em、rem 詳解CSSREM
- 開發可能會用到的三種快取key快取
- 生活和開發所用到的一些工具
- 不同型別的app開發所用到的技術型別APP
- android kotlin dp 轉換工具AndroidKotlin
- Android適配:DP簡述Android
- 相親交友原始碼開發中會用到的幾種日期處理方法原始碼
- CSS · 0.1px,0.2px......0.9px,1px效果CSS
- Android開發教程-使用DataBinding(六)RecyclerViewAdapter中的使用AndroidViewAPT
- 我的Android開發框架Collection(持續更新中)Android框架
- SQL 自定義函式 生成網路卡地址,MES開發中經常會用到的SQL函式
- 【Python】開發過程中經常使用到的5種設計模式有哪些?Python設計模式
- android開發中如何動態獲取listview中的item的值AndroidView
- Android開發_在Android Studio中搜尋專案中出現過的字串Android字串
- Android開發中利用ObjectAnimator實現ArcMenuAndroidObject
- Android應用開發中如何使用隱藏的APIAndroidAPI
- android開發中犯的小錯誤,不要學我!Android
- 中級Android開發應該瞭解的Binder原理Android
- Java開發和Android開發的區別JavaAndroid
- 實際開發需求中使用到 AOP Aspect
- 從單體應用到微服務開發旅程微服務
- 前端、後端開發者常用到的免費API整理前端後端API
- 軟體開發各個階段用到的各種圖