關於像素?

咱們說的分辨率,前端

好比瀏覽器

  1. iphone4的分辨率是 960 * 640 —這個是單位是點,標識設備屏幕上有多少顯示單元,每一個顯示單元,能夠理解一個個物理的發光二極管
  2. iphone4的尺寸是3.5in,說的是物理的尺寸,對角線的長度,對應咱們常說的物理單位,cm,m這種。
  3. 思考一下,是否是個人分辨率越高,就顯示的越清晰?

NO, 分辨率高未必清晰,我都見過那種很大led廣告屏,分辨率高啊,幾千幾萬,可是仍然能看到明顯的顆粒度。iphone

在仔細一想,其實清晰不清晰,主要看的是單位密度(ppi)而不是設備總像素的多少。是否是單位密度越高,顯示的細節越清晰啊。設計

  1. 有沒有發現,全部的這些都是和具體的設備掛鉤的。談像素談尺寸,都是離不開具體的設備。

可是有個問題,爲啥又引入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。

不管畫布設成多大,咱們設計的是基準倍率的界面樣式,並且開發人員須要的單位都是邏輯像素

因此爲了保證準確高效的溝通,雙方要以邏輯像素尺寸來描述和理解界面。

相關文章
相關標籤/搜索