咱們說的分辨率,前端
好比瀏覽器
NO, 分辨率高未必清晰,我都見過那種很大led廣告屏,分辨率高啊,幾千幾萬,可是仍然能看到明顯的顆粒度。iphone
在仔細一想,其實清晰不清晰,主要看的是單位密度(ppi)而不是設備總像素的多少。是否是單位密度越高,顯示的細節越清晰啊。設計
可是有個問題,爲啥又引入dp的概念,獨立設備像素呢。ip
物理像素對應設備像素不是挺好?開發
好嗎?rem
對於開發人員來講,設備千千萬。分辨率千差萬別。總結
你想一下,若是一樣3.5寸的屏幕上,我有個列表移動端頁面
寬度都是100%,高度我設置 20樣式
你會發現,分辨率高的屏幕上,高度特別小,寬度特別長。反卻是
分辨率高的顯示的不清晰(跟螞蟻同樣,密度過高,物理上看起來就小的很)
這可咋整啊。
設備廠商也鬱悶了,草尼瑪,老子辛辛苦苦提升分辨率,出力不討好啊。
有啥辦法,看起來物理上的高度和寬度都一致,可是更清晰的。
有沒有什麼辦法解決啊!
因而你們一合計,你是ppi高嗎?那我定義一個單位,
這就引出的獨立設備像素,顧名思義,就是獨立於設備的像素。
我就定義一個邏輯單位,dp
dp有多大呢,dp就有小指頭的上方的一小塊這麼大(笑笑)。
大家呢都,儘可能往上靠,高的你就在設備層面轉化物理像素的時候,放大一下。
低的呢,你就縮小一點。
這樣看起來,你們是否是差很少大了。
對於開發人員來講,只要設置的兩個屏幕邏輯像素相同,它們的顯示效果就是相同的。
是否是很爽。
你們一總結,發現把設備按照ppi分一下,大概是這麼個比例:
ldpi [0.75倍]
mdpi [1倍]
hdpi [1.5倍]
xhdpi [2倍]
xxhdpi [3倍]
xxxhdpi [4倍]
不難發現,真正決定顯示效果的,是邏輯像素尺寸(獨立設備像素)。
有人問了,我一個前端懂這些有卵子用。
移動端頁面的絕對單位就是px啊,我設置dp也不支持啊(草!!!爲啥不支持dp?)
px和dp有啥關係?你想啊,瀏覽器也是設備上的應用,也是按照設備的縮放比縮放的。
具體能夠對照一下, 縮放比:
1dp=1px(mdpi、iPhone 3gs)
1dp=1.5px(hdpi)
1dp=2px(xhdpi、iPhone 4s/5/6)
1dp=3px(xxhdpi、iPhone 6)
1dp=4px(xxxhdpi)
你再想一想,不支持dp也行啊,你不是不支持嗎?
老子本身造,本身的輪船本身造(哈哈!笑)
既然我都知道縮放比了,老子本身換算一下不就ok了。
嗯,對了,就你最聰明!!
哈哈,因此就有了rem的解決方案。
ps: 如何和設計溝通?
單位決定了咱們的思考方式。
在設計和開發過程當中,應該儘可能使用邏輯像素尺寸來思考界面。
設計Android應用時,有的設計師喜歡把畫布設爲1080×1920,有的喜歡設成720×1280。
給出的界面元素尺寸就不統一了。
Android的最小點擊區域尺寸是48x48dp,這就意味着在xhdpi的設備上,按鈕尺寸至少是96x96px。
而在xxhdpi設備上,則是144x144px。
不管畫布設成多大,咱們設計的是基準倍率的界面樣式,並且開發人員須要的單位都是邏輯像素
。
因此爲了保證準確高效的溝通,雙方要以邏輯像素尺寸來描述和理解界面。