android螢幕解析度、密度、尺寸、px、dp等
1.什麼是螢幕尺寸、解析度和畫素密度?
螢幕尺寸
單位:英寸(inch) 1英寸 = 2.54釐米
目前市場上螢幕尺寸以5.5英寸為主(Android 2018年),資料由【友盟】提供。
推薦大家去看下,是一家資料統計網站,國內是比較知名的統計網站和工具。
螢幕解析度:
定義:橫縱向上的畫素點 ( 解析度越高,顯示的效果越好)
單位:px 1px = 1畫素點
一般表達的方式,縱向畫素 * 橫向畫素 = 1920 * 1080
目前市場上手機螢幕解析度 還是以1920*1080畫素為主
螢幕畫素密度
定義:指的是每英寸上的畫素點 (密度越高,顯示效果越好)
單位:dpi
畫素密度與【螢幕尺寸】和【解析度】有關
下面舉個“栗子”
一部4.95英寸、螢幕解析度是1920*1080的手機,求螢幕畫素密度
手機4.95英寸,指的是手機對角線的長度
因為AC=1920,BC=1080,所以AB≈2203 所以畫素密度 = 2203 / 4.95 ≈ 445 為什麼我們要用android開發的時候不用px做為單位?
px(畫素)
構成影象的最小單位
dp 、dip
密度無關畫素 【注意,dip和dpi不一樣】
如果在160dpi(畫素密度為160),那麼 1dip = 1px 在240dpi(畫素密度為240),那麼 1.5dip = 1px (後面會解釋,彆著急)
舉個“栗子”
在2部手機中
A手機 解析度為 480*320,畫素密度為 160DPI
B手機 解析度為 800*480,畫素密度為 240DPI
A手機
B手機 如果我們圖片要在A手機寬度鋪滿全屏顯示的話,我們就得設定圖片寬度為320px
我們要B手機寬度鋪滿全屏顯示,需要設定多少?得設定480px。
那麼問題來了,android手機那麼多,解析度並不是固定的(參考樓上解析度資料),不像iPhone,螢幕的解析度是固定的。我們想要圖片在每部手機顯示都是橫向鋪滿的,設定px的話明顯有問題。
所以,我們開發的時候單位一般設定為dp、dip
如果我們圖片設定320dp,在480*320上,1dp=1px,所以圖片是鋪滿的
在800*480手機上,1px = 1.5dp,所以320dp = 320dp * 1.5 = 480dp,所以圖片也是鋪滿的
可能到這裡小夥伴們頭腦沒轉過來,為什麼1px在不同解析度手機上,等於的dp是不同的呢?
因為手機的畫素密度不同啊!
上面說過dp、dip叫做密度無關畫素,你可以這麼理解,dp和dip存在的意義,是和畫素密度沒有關係的。我使用dp作為單位設定控制元件,不管你什麼螢幕大小,多大的dpi,顯示的效果始終保持一致。就是專門用於不同手機螢幕解析度,我卻能都適應。至於160dpi裡1dp=1px,480dpi裡1dp=1.5px,為什麼這麼設定呢?因為人家google就這麼定義的。沒必要深究
px和dp的換算公式:px = dp * (dpi / 160)
sp
定義:根據字型首選項進行縮放
sp絕大部分都是用來設定文字大小的大小.
google開發指導手冊上推薦我們設定12sp以上大小的單位,不要用12sp以下,以為使用者可能看不清。推薦使用大小有12sp、14sp、18sp和22sp作為我們首選的字型大小。
字型設定的時候 不能有 小數和奇數。因為字型放縮的時候可能對精度的丟失
最後如果大家有空就看下這個android design 對大家還是有些幫助的