andoid最被人詬病的就是顯示屏的各種不同尺寸和不同解析度。由於android廠商的紛繁多樣,導致出現了不同尺寸和不同解析度的手機,指示開發者需要相容各種手機螢幕。本文想學習的就是android的顯示螢幕的各種名詞。
開啟手機引數,會看到這樣的資料
尺寸指的是螢幕對角線的長度。以英吋作為度量單位。
解析度指的是在長和寬上各有多少畫素。用這個能知道寬高比,一般如果寬高比例是16:9,就是寬屏,4:3就是窄屏了。
我們平時說的vga,hvga,qvga,wvga,wqvga是解析度的概念:
vga:video graphics array,即:顯示繪圖矩陣,相當於640×480 畫素;
hvga:half-size vga;即:vga的一半,解析度為480×320;
qvga:quarter vga;即:vga的四分之一,解析度為320×240;
wvga:wide video graphics array;即:擴大的vga,解析度為800×480畫素;
wqvga:wide quarter vga;即:擴大的qvga,解析度比qvga高,比vga低,一般是:400×240,480×272
指的是一英吋有多少畫素點。
這裡使用的單位有幾個:dpi,ppi
ppi和dpi經常被混用,其實ppi才是正確的(pixel per inch),dpi(dot per inch)是在列印的時候才用到的。
比如上面那個手機引數中,密度是441ppi,則說明每1平方英吋的螢幕中有441*441個畫素。
我們可以稍微做下計算,這個手機螢幕高有1920個畫素,密度是441ppi,則高大致有1920/441 = 4.35 英吋,寬有1080/441 = 2.44英吋。那矩形對角線長度(尺寸)5^2 ~ 4.35^2 + 2.44^2
我們可以看到我們的res資料夾中儲存的資訊都是用dpi來做的,比如
drawable-hdpi
drawable-ldpi
drawable-mdpi
drawable-xdpi
hdpi就是高密度,mdpi中等密度,ldpi低密度,xdpi更高密度。
因為大小是以畫素來算的,比如乙個是400*300,就是長寬佔的畫素。
想象下兩個手機有同樣的尺寸和寬高比,但是乙個是高密度高解析度的,乙個是低密度低解析度的。那麼同樣乙個在高密度的手機上就會顯示非常小,在低密度低解析度手機上就會顯示非常大。因此對不同密度設定不同的是很有必要的。
我們一直都是用畫素來做基本單位的,但是android的大小解析度不一,比如乙個320的直線,在240*320的解析度下正好放,但是在240*640的解析度下只顯示了一半,就是說這個展示實際和密度是相關的。因此android引入了乙個密度無關畫素的概念。這是乙個量詞,dp或者叫dip(density independent pixel)。它和畫素並不是一一對應的,是有乙個換算公式的。比如在160dpi密度的螢幕中(1英吋有160*160個畫素),那麼dp就和畫素是等價的。如果說在320dpi密度的螢幕中,那麼乙個dp就相當於2個畫素了。
好處就是如果在開發中,比如一條直線以dp作為單位,那麼只要設定一次,就可以適配到多個螢幕了。
首先android將解析度與密度繫結起來,做了乙個約定
即320*480解析度的手機,它的密度必須設定為160dpi,那麼它在寬上可以展示320個畫素,也是320dp。對於480*800解析度的在3寸到4寸手機呢,它的密度必須是240dpi,那麼在寬上可以顯示480畫素,dp呢?160 / 240 * 480 = 320dp。也是可以顯示320dp。所以如果在程式中設定一條直線為320dp,那麼在不同解析度下一樣會佔滿了整個寬。
android至今還有頭疼的解析度的問題就在於px和dp的轉換上。我們的資源還是以px為單位,在轉換成dp的過程中會出現各種問題。比如轉換過程中的四捨五入的問題可能會導致的顯示出現差異等。
眾說紛紜,我也說「雲」
最近 雲 這個東西大家炒的火熱,雲 到底是個什麼東西?請往下看 記得以前寫過一篇 關於部落格 的文章,其中提到寫部落格的好處之一就是把自己的東西放在了網上。這相對於本地儲存會更加安全,畢竟大公司的伺服器比你計算機出問題的概率小得多。其實細說起來部落格應該算是 雲 應用的一種。你的部落格人人都可以看,...
眾說紛紜,我也說「雲」
最近 雲 這個東西大家炒的火熱,雲 到底是個什麼東西?請往下看 記得以前寫過一篇關於部落格 的文章,其中提到寫部落格的好處之一就是把自己的東西放在了網上。這相對於本地儲存會更加安全,畢竟大公司的伺服器比你計算機出問題的概率小得多。其實細說起來部落格應該算是 雲 應用的一種。你的部落格人人都可以看,大...
眾說紛紜,我也說「雲」
最近 雲 這個東西大家炒的火熱,雲 到底是個什麼東西?請往下看 記得以前寫過一篇關於部落格 的文章,其中提到寫部落格的好處之一就是把自己的東西放在了網上。這相對於本地儲存會更加安全,畢竟大公司的伺服器比你計算機出問題的概率小得多。其實細說起來部落格應該算是 雲 應用的一種。你的部落格人人都可以看,大...