1. 程式人生 > >android中 mdpi,hdpi,xhdpi,xxhdpi檔案理解,圖片畫素理解

android中 mdpi,hdpi,xhdpi,xxhdpi檔案理解,圖片畫素理解

1, 我們在開發的時候,特別是剛開始入行的時候會有疑惑,為什麼那麼多資料夾放圖片,比如mdpi,hdpi,xhdpi,xxhdpi,從ui手裡拿到圖片我到底該放在哪呢? 今天就來分享一下,圖片應該放在哪,並分享一下圖片裡我理解的畫素點。

  網上有很多描述這些檔案的文章,大家可以看到;

mdpi : 120dpi--160dpi

hdpi : 160dpi--240dpi

xhdpi : 240dpi--320dpi

xxhdpi : 320dpi--480dpi

這些引數可以判斷你的手機會優先從哪個資料夾裡去找圖片

舉個例子,如果你的手機是解析度是:1920x1080,尺寸是5.1寸,我們可以算他的dpi值,

公式是(√ ̄1920² + 1080²)/5.1 =2202/5.1= 431dpi  

演算法是螢幕尺寸是通過手機的左上角到手機的右下角的長度,所以我們用螢幕長和寬的畫素點根據勾股定理算出手機從左上角到右下角的畫素值,由畫素值/尺寸就算出了每尺寸有多少畫素值就是dpi,

由算出來的431dpi可以知道,手機會先從xxhdpi裡去查詢圖片,如果沒有會往上找。如果xhdpi裡有這個圖片會使用xhdpi裡的圖片,但是你呼叫一些方法去看這個圖片的畫素值的時候發現會比在xhdpi裡的圖片放大了,就是寬高的畫素都增加了,那麼為什麼要放大以後再顯示出來呢? 這就引出來,android為什麼引入這麼多資料夾來放圖片的原因了:

因為我們在開發的時候我們往往給某一個控制元件設定一個大小,比如:


我這裡只想這個圖片在任何手機上都是手機的這個比例。怎麼辦,就是在手機畫素大的時候就是手機api大的時候我讓這個手機去載入畫素大的圖片,這樣比例才能一樣,所以我們要在xxhdpi裡放畫素相對大一點的圖片,比如:xxhdpi放94x94的xhdpi放74x74,hdpi裡放45x45,這樣不管是什麼樣的手機圖片都能在指定的比例顯示,說回剛剛那個問題如果一個xxhdpi的手機載入了一個xhdpi裡的圖片為什麼要放大呢,因為我是xxhdpi的手機我需要載入xxhdpi裡的圖片,但是xxhdpi資料夾裡沒有這個圖片,只能載入xhdpi資料夾裡的圖片,那麼載入這裡的圖片的時候我們為了讓xhdpi裡的圖片能夠達到xxhdpi裡的圖片在手機裡顯示的比例,就把這個圖片做了放大操作。希望大家能夠明白。

2,下面說一下圖片畫素的理解

畫素是圖片中一個最小單位,也是手機螢幕中的最小單位

我們往往就畫素描述圖片的大小。但是用圖片描述圖片是不準確的,我們圖片也有尺寸,如果相同的尺寸,含有畫素多的圖片,就越清晰,所以只用畫素描述圖片是不能判斷圖片的清晰度的。清晰度其實就像上邊說的dpi的值,這個值越大就越清晰,因為含有的畫素點多,就會比較精細。

好啦,希望大家能吸收點東西。