(原創)高DPI適配經驗系列:(二)按DPI範圍適配

leslie_xin發表於2021-04-09

一、前言

一個軟體,往往會用到點陣圖資源,比如圖示、圖片、水晶按鈕等。
在使用了點陣圖資源後,就不能對任意DPI都進行適配,因為這樣適配的代價太大了。
像Win10的縮放比例可以由100%-500%,如果全部適配的話,僅一個圖示就是製作401個不同解析度的版本,時間成本和空間成本上開銷都太大了。同時,在很多DPI下,這401個圖示當中有很多臨近的圖示的尺寸變化並不明顯,甚至相同,這樣無疑是浪費。
所以,我們就需要以DPI範圍為基礎進行適配。

相信看完的你,一定會有所收穫!

本文地址:https://www.cnblogs.com/lesliexin/p/14636355.html


二、DPI計算公式與適配任意解析度

1,DPI計算公式

第一篇中,我通過推理和歸納,總結出了DPI與縮放比例間的對應關係。
但其實,DPI與縮放比例之間是有一個計算公式的,如下:
DPI=縮放比例*96
結果取整數,小數位四捨五入。
示例:
縮放比例為150%時,DPI=150%*96=144。
這也是為什麼會出兩個縮放比例對應同一個解析度。
112%:DPI=112%*96=107.52,四捨五入後,DPI=108;
113%:DPI=113%*96=108.48,四捨五入後,DPI=108;

2,適配任意解析度

如果需要適配任意解析度,那麼尺寸就需要等比縮放。根據縮放比例進行計算比例,從100%開始,到500%結束。
同時,因為解析度是都是整數,所以要對計算後的結果進行四捨五入取整處理。

在前言中,我舉了個圖示的例子,但實際上因為圖示的尺寸很小,一般的圖示是16*16,所以真正所需要製作的尺寸並達不到401個。
以16*16解析度的圖示為例:

從上圖可以看出,在好多縮放比例下,圖示的尺寸都是一樣的,所以綜合下來並達不到401個,但是也有60+,製作這麼多圖示,是極其消耗人力的。


三、按DPI範圍適配

適配任意DPI是完美的,但是在實際應用中,這種太過耗費時間與精力。
同時,在實現使用過程中,這些細小的變化對實際的使用影響並不大,而且整體介面尺寸的變化也不大。
所以便可以按照“DPI範圍”進行適配,不同範圍的DPI值對應不同的縮放係數,這也是目前主流的高DPI適配方法。
同時,因為在程式中,我們可以獲取到的是DPI資訊,而不是縮放資訊,所以為了減小計算,是按照DPI去劃分範圍的,而不是按縮放比例去劃分範圍的。
在選擇適配範圍時,有多種範圍選擇方法。這裡提供一種我個人常用的範圍分配方法:

優點:
1,適配完目前的100%~500%,每個圖示只需要9份即可。
如下:

2,縮放係數以0.5遞增,方便各種尺寸的計算。特別只要是偶數,計算後就會是整數,省去取整時精度損失。

當然,以目前實際應用而言,300%的縮放已經很極限了,所以在此基礎上還可以進一步的簡化,以減少工作量。
還可以在低縮放比例下再次細化,以到達更好的使用者體驗。


四、總結

世間安得雙全法,所以大家可以根據自己的實際需要,來制定自己的適配方案。
本文也只是一家之言,歡迎大家評論指正。

-【END】-

相關文章