對于手機的尺寸和螢幕的分辨率等,一直以來不是很清楚,是以花了些時間學習了一下,做一下小結,若有不對之處,還望指正。
下面以我的手機 華為C8813 為例,參數如下:
主屏尺寸: 4.5 英寸
主屏分辨率: 854x480
手機尺寸: 132.5x67x9.3 mm
一:螢幕的尺寸 (Screen Size)
1: 主屏尺寸
表示 主屏對角線的長度 (不是整個手機的長度)
其中以 1 英寸 = 2.54 cm
是以 4.5 英寸 = 4.5 * 2.54 = 11.43 cm ,一般說的手機的螢幕大小都是指的主屏的尺寸,而不是手機的面積
2: 手機尺寸
表示手機的實際大小( 整個手機),也稱實體尺寸 132.5x67x9.3mm 其中9.3mm是厚度
二: 螢幕分辨率
Android 擷取螢幕的分辨率如下: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int width = metrics. widthPixels ;-------------480(c8813的參數) int height = metrics. heightPixels ;-----------854 int density = ( int ) metrics. density ;-------- 1 int densityDpi = metrics. densityDpi ;--------- 240
1:像素 pixel (px)
要說分辨率,先說像素是picture和element兩個單詞的字母組成 ,圖像成像的最小機關,越高的像素,其擁有的色闆也就越豐富,越能表達顔色的真實感。
不同裝置顯示效果相同。這裡的“相同”是指像素數不會變,比如指定UI長度是100px,那不管分辨率是多少UI長度都是100px。也正是因為如此才造成了UI在小分辨率裝置上被放大而失真,在大分辨率上被縮小。
2:分辨率 Resolution
定義1:螢幕上擁有的像素的總數。注意,雖然大部分情況下分辨率都被表示成“ 寬帶 x 長度” ,但分辨率并不意味着螢幕長寬比。 定義2: 指手機螢幕垂直和水準方向上的像素個數。比如分辨率是480*320,則指裝置垂直方向有480個像素點,水準方向有320個像素點。 上面兩個定義中,意思差不多,個人覺的定義2說的更準确一些。 目前 我的C8813的 分辨率是 : 854x480
3:密度 Density
定義:每平方英尺中的像素數。 通常的值 : 0.75/1/1.5 int density = ( int ) metrics. density ;
4:Dpi DensityDpi
定義:每英尺中的像素數。(dots per inch 像素密度) 例如:240 dpi 指手機水準或者垂直方向上每英尺距離有240個像素點。 而 c8813的 分辨率為 854 x 480 則 螢幕長 = 854 /240英尺 ,寬 = 480 / 240 英尺 int densityDpi = metrics. densityDpi ;
5: Dip (dp) 裝置獨立像素
Dip (Device-independent pixel),在布局中用"dp",不依賴像素,這個是Android 推薦了在布局中使用dp作為機關.
注意:有個公式
dip (dp) = 裝置密度dpi/160 * pixel = Dpi /160 * pixel
例如:c8813 的 裝置密度 densityDpi = 240 是以 dip = 240 / 160 * pixel = 1.5 pixel
如果dpi = 160 ,則 1dp = 1pixel (px)
6: Sp 放大像素
主要用于字型顯示(best for textsize)。根據 google 的建議,TextView 的字号最好使用 sp 做機關,而且檢視TextView的源碼可知 Android 預設使用 sp 作為字号機關。
7: 各個螢幕的分辨率
QVGA : 分辨率為 240*480 (Quarter VGA即四分之一) HVGA :分辨率為 320*480 ( Half-size VGA即一半) VGA : 分辨率為 640*480 (全稱Video Graphic Array) WVGA : 分辨率為 800*480 (Wide VGA 很多網頁的寬度都是800,是以WVGA的手機螢幕會更加适合于浏覽網頁) FWVGA :分辨率為 854*480 手機c8813就是 其他的分辨率就不一一說了。