分辨率,屏幕尺寸,屏幕密度,dp,px,sp
我們?cè)谧鯱I時(shí)候經(jīng)常遇到這幾個(gè)概念,但是就是不知道他們之間的關(guān)系,這篇文章將會(huì)解惑。
像素:顯示圖像的基本單元,單位px
分辨率:是縱橫向上的像素點(diǎn)數(shù),單位是px,比如1920*1080說的是縱向有1920個(gè)像素點(diǎn),橫向有1080個(gè)像素點(diǎn)。
屏幕尺寸:是手機(jī)屏幕對(duì)角線的長(zhǎng)度,單位為英寸。
屏幕像素密度:每單位的像素的點(diǎn)數(shù),簡(jiǎn)稱PPI(Pixels Per Inch),單位dpi(Dots Per Inch)。
上述的關(guān)系為:
屏幕的像素密度=√(分辨率高2 + 分辨率寬2)÷ 屏幕尺寸。
例如:
那我們Android中的dp和sp與上面的概念有什么關(guān)系呢?
dp:Android引入了密度無關(guān)像素 (dp) 作為度量單位來設(shè)計(jì)界面。dp 是一個(gè)虛擬像素單位,1 dp 約等于中密度屏幕(160dpi;“基準(zhǔn)”密度)上的 1 像素。對(duì)于其他每個(gè)密度,Android 會(huì)將此值轉(zhuǎn)換為相應(yīng)的實(shí)際像素?cái)?shù)。
px = dp * (dpi(屏幕的像素密度) / 160)
sp:為縮放后的字體的單位,我們不能在布局中使用它,我們通常在設(shè)置字體大小中使用。
px = sp(scaleDpi)*
代碼的位置為:
public class TypedValue {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;} }我們適配圖片時(shí)候常常會(huì)涉及到xxhdrawable的素材又是什么意思呢?
見如下圖:
參考資料:
今日頭條適配方案
支持不同的像素密度
總結(jié)
以上是生活随笔為你收集整理的分辨率,屏幕尺寸,屏幕密度,dp,px,sp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity中更换鼠标的图标
- 下一篇: 顶帖广告