****** ps看完之后就知道怎么和美工部的小姐姐解釋為什么圖片不要用px啦平道!??
1.什么是屏幕尺寸、分辨率和像素密度供炼?
屏幕尺寸
單位:英寸(inch)? ?1英寸 = 2.54厘米
目前市場上屏幕尺寸以5.5英寸為主(Android 2018年)一屋,數(shù)據(jù)由【友盟】提供。
推薦大家去看下袋哼,是一家數(shù)據(jù)統(tǒng)計(jì)網(wǎng)站冀墨,國內(nèi)是比較知名的統(tǒng)計(jì)網(wǎng)站和工具。
屏幕分辨率:?
定義:橫縱向上的像素點(diǎn)? ? ????(?分辨率越高涛贯,顯示的效果越好)
單位:px? ?1px = 1像素點(diǎn)
?一般表達(dá)的方式诽嘉,縱向像素 * 橫向像素 = 1920 * 1080
目前市場上手機(jī)屏幕分辨率 還是以1920*1080像素為主
屏幕像素密度
定義:指的是每英寸上的像素點(diǎn)????????(密度越高,顯示效果越好)
單位:dpi?
?****************像素密度與【屏幕尺寸】和【分辨率】有關(guān)******************
下面舉個(gè)“栗子”
一步4.95英寸疫蔓、屏幕分辨率是1920*1080的手機(jī)含懊,求屏幕像素密度
所以像素密度 = 2203 / 4.95 ≈ 445
為什么我們要用android開發(fā)的時(shí)候不用px做為單位?
px(像素)
構(gòu)成圖像的最小單位
dp 滚躯、dip
密度無關(guān)像素 ????【注意雏门,dip和dpi不一樣】
如果在160dpi(像素密度為160),那么 1dip = 1px
? ? ? ? 在240dpi(像素密度為240)掸掏,那么 1.5dip = 1px????????(后面會(huì)解釋茁影,別著急)
舉個(gè)“栗子”
在2部手機(jī)中
A手機(jī) 分辨率為 480*320,像素密度為 160DPI
B手機(jī)?分辨率為?800*480丧凤,像素密度為?240DPI
如果我們圖片要在A手機(jī)寬度鋪滿全屏顯示的話募闲,我們就得設(shè)置圖片寬度為320px
我們要B手機(jī)寬度鋪滿全屏顯示,需要設(shè)置多少愿待?得設(shè)置480px浩螺。
那么問題來了靴患,android手機(jī)那么多,分辨率并不是固定的(參考樓上分辨率數(shù)據(jù))要出,不像iPhone鸳君,屏幕的分辨率是固定的。我們想要圖片在每部手機(jī)顯示都是橫向鋪滿的患蹂,設(shè)置px的話明顯有問題或颊。
所以,我們開發(fā)的時(shí)候單位一般設(shè)置為dp传于、dip
如果我們圖片設(shè)置320dp囱挑,在480*320上,1dp=1px格了,所以圖片是鋪滿的
在800*480手機(jī)上看铆,1px = 1.5dp,所以320dp = 320dp * 1.5 = 480dp盛末,所以圖片也是鋪滿的
可能到這里小伙伴們頭腦沒轉(zhuǎn)過來,為什么1px在不同分辨率手機(jī)上否淤,等于的dp是不同的呢悄但?
因?yàn)槭謾C(jī)的像素密度不同啊石抡!
上面說過dp檐嚣、dip叫做密度無關(guān)像素,你可以這么理解啰扛,dp和dip存在的意義嚎京,是和像素密度沒有關(guān)系的。我使用dp作為單位設(shè)置控件隐解,不管你什么屏幕大小鞍帝,多大的dpi,顯示的效果始終保持一致煞茫。就是專門用于不同手機(jī)屏幕分辨率帕涌,我卻能都適應(yīng)。至于160dpi里1dp=1px续徽,480dpi里1dp=1.5px蚓曼,為什么這么設(shè)置呢?因?yàn)槿思襣oogle就這么定義的钦扭。沒必要深究
px和dp的換算公式:px = dp * (dpi / 160)
sp
定義:根據(jù)字體首選項(xiàng)進(jìn)行縮放
sp絕大部分都是用來設(shè)置文字大小的大小.
google開發(fā)指導(dǎo)手冊上推薦我們設(shè)置12sp以上大小的單位纫版,不要用12sp以下,以為用戶可能看不清客情。推薦使用大小有12sp其弊、14sp癞己、18sp和22sp作為我們首選的字體大小。
字體設(shè)置的時(shí)候? ? 不能有? ?小數(shù)和奇數(shù)瑞凑。因?yàn)樽煮w放縮的時(shí)候可能對精度的丟失
最后如果大家有空就看下這個(gè)android design? 對大家還是有些幫助的
http://www.apkbus.com/design/