Android將屏幕像素密度(DPI)分成四個基本密度:lDPI(低),mDPI(中等),hDPI(高)以及xhDPI(特高)。Android開發人員一般不考慮屏幕的分辨率,而是它的密度。Android應用開發者在定義佈局的UI時,會以密度無關像素(DP)的方式表達佈局的維度和位置,這樣確保UI在不同密度的屏幕上得以正確顯示。密度無關像素就相當於160dpi屏幕上的一個物理像素(對於中等密度的屏幕系統來說是基準密度)。例如240 dpi的屏幕上,1個設備獨立像素等於1.5物理像素.爲確保UI組件在不同的屏幕都能合適的展示,android應用使用設備獨立像素單元來定義應用程序的UI。
屏幕尺寸分類和密度分類對比如下:
四種屏幕尺寸分類:: small, normal, large, and xlarge
四種密度分類: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
需要注意的是:xhdpi是從
應用程序自動縮放詳解
Android應用程序在
注意,由於矢量繪製會產生痕跡,一般來說最好是放大而不是縮小。因此,最好針對低的密度(比如
與密度相關位圖設置
應用程序根據不同的密度自動地縮放時,矢量縮放並不包括文本,而是縮放字體大小,從而以不同的大小顯示保真度很高的文本。但是,位圖會被縮放。這並不好,因爲放大位圖通常會產生不可接受的痕跡。例如從基準線設計的屏幕(記住基線佈局設置在320*480)上獲取了一個100*100像素的位圖圖標。將相同的100*100圖標配置在lDPI屏幕,該圖標會顯得很大很模糊。同樣地,將其配置在hDPI屏幕上,它會顯得太小(由於設備的每英寸的點數比mDPI屏幕多),如下圖所示:
要調整不同的設備屏幕密度,我們需要在四個密度大小之間按照3:4:6:8縮放比例。使用這些比率,通過簡單的計算,android創造四個不同的版本的位圖,以供開發生產:
- 75*75對應低密度屏幕(如0.75); ---ldpi
- 100*100對應中等密度的屏幕(基準); ---mdpi
- 150*150對應高密度屏幕(
1.5); ---hdpi - 200*200對應超高密度顯示屏(
2.0)。 ---xdpi -
四種不同網點密度。
·
·
Android系統也提供人工管理資源的方式:如下所示
Android pad定製資源文件,則res目錄下的目錄可能爲:
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-nodpi
drawable-nodpi-1024×600
drawable-nodpi-1280×800
drawable-nodpi-800×480
values
values-ldpi
values-mdpi
values-hdpi
values-xhdpi
values-nodpi
values-nodpi-1024×600
values-nodpi-1280×800
values-nodpi-800×480