像素(Pixel = picture element):
“像素”(Pixel)是由 Picture(圖像) 和 Element(元素)這兩個單詞的字母所組成的,是用來計算數碼影像的一種單位,如同攝影的相片一樣,數碼影像也具有連續性的濃淡階調,我們若把影像放大數倍,會發現這些連續色調其實是由許多色彩相近的小方點所組成,這些小方點就是構成影像的最小單位“像素”(Pixel)。這種最小的圖形的單元能在屏幕上顯示通常是單個的染色點。越高位的像素,其擁有的色板也就越豐富,越能表達顏色的真實感。
點有時用來表示像素,特別是計算機市場營銷人員,因此ppi有時縮寫為DPI(dots per inch)。用來表示一幅圖像的像素越多,結果更接近原始的圖像。一幅圖像中的像素個數有時被稱為圖像解析度,雖然解析度有一個更為特定的定義。
像素可以用一個數表示,譬如一個"0.3兆像素" 數碼相機,它有額定三十萬像素,或者用一對數字表示,例如“640乘480顯示器”,它有橫向640像素和縱向480像素(就像VGA顯示器那樣),因此其總數為640 × 480 = 307,200像素。數字化圖像的彩色采樣點(例如網頁中常用的JPG文件)也稱為像素。取決於計算機顯示器,這些可能不是和屏幕像素有一一對應的。在這種區別很明顯的區域,圖像文件中的點更接近紋理元素。在計算機編程中,像素組成的圖像叫位圖或者光柵圖像。
密度(Density):
度量像素往往使用PPI(每英寸像素)或者DPI(每英寸點陣),當英寸數量是固定的情況下,往往使用密度來度量像素的排列控件,密度越高像素在一英寸的中的密集度就越高。
密度較低的屏幕,在長和寬方向都只有比較少的像素,而高密度的屏幕通常則會有很多——甚至會非常非常多——像素排列在同一區域。屏幕的密度是非常重要的,舉個例子,長寬以像素為單位定義的界面元素(比如一個按鈕),在低密度的屏幕上會顯得很大,但在高密度的屏幕上則會顯得很小。
Android常用像素與密度定義:
低密度(120),ldpi
中密度(160),mdpi
高密度(240),hdpi
小屏幕
QVGA(240×320),2.6~3.0寸
普通屏幕
·WQVGA(240×400),3.2~3.5寸
·FWQVGA(240×432),3.5~3.8寸
·HVGA(320×480),3.0~3.5寸
·WVGA(480×800),3.3~4.0寸
·FWVGA(480×854),3.5~4.0寸
大屏幕
·WVGA(480×800),4.8~5.5寸
·FWVGA(480×854),5.0~5.8寸
例如:QVGA的標准像素為240px(橫向)×320px(縱向)一般使用2.6-3.0英寸的屏幕
這個度量單位是指:以屏幕的對角線長度作為依據的長度。這樣就可以知道實際的像素密度:平均每英寸包含120個像素。
Android常用單位:
密度無關的像素(DIP)
指一個抽象意義上的像素,程序用它來定義界面元素。它作為一個與實際密度無關的單位,幫助程序員構建一個布局方案(界面元素的寬度,高度,位置)。
一個與密度無關的像素,在邏輯尺寸上,與一個位於像素密度為160DPI的屏幕上的像素是一致的,這也是Android平台所假定的默認顯示設備。在運行的時候,平台會以目標屏幕的密度作為基准���“透明地”處理所有需要的DIP縮放操作。要把密度無關像素轉換為屏幕像素,可以用這樣一個簡單的公式:pixels = dips * (density / 160)。舉個例子,在DPI為240的屏幕上,1個DIP等於1.5個物理像素。我們強烈推薦你用DIP來定義你程序的界面布局,因為這樣可以保證你的UI在各種分辨率的屏幕上都可以正常顯示。
從理論上看,Android解決方案適合任何像素密度。為方便起見,Google制定出一些主 要計數單位:規定1ldpi=120dpi,1mdpi=160 dpi,1hdpi=240 dpi,1xhdpi=320 dpi。為推動這一方案,Google力勸軟件人員為不同DPI顯示屏提供資源,確保其應用在任一款設備上看起來更漂亮。
因此我們強烈建議大家在布局控件時,使用DP(DIP)為單位,它能保證組件在不同分辨率中合理顯示。
刻度像素(SP=Scaled Pixel):
將尺寸定義成該單位,字體會隨著用戶字體設置的改變而改變。
Google建議為不同的分辨率設置不同的圖像資源和布局文件。
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png // bitmap for medium density
res/drawable-hdpi/my_icon.png // bitmap for high density
res/drawable-xhdpi/my_icon.png // bitmap for extra high density