據統計目前市場Android手機的分辨率有是10余種,分辨率如此廣泛使得我們在處理分辨率適應方便遇到不少難題,本文就此難點記錄設計與實際布局中的解決技巧。
以320x480為藍本設計布局
因為Android布局的時候一般用dp為單位,而我們設計的時候一般用px為單位,這涉及到單位轉換問題,而在mdpi下,屏幕密度為160,px和dp是1:1關系,即1px =1dp(dpi/160),
所以為了更方便轉換,在進行設計的時候,可以優先以mdpi,即320x480px為藍本進行設計。
還有別忘了手機頭頂的狀態欄高度了
那么當我們用photoshop測量間距是10px時,就可以在布局里面標注10dp。
資源文件夾 | 屏幕分辨率 | 類型 | 對應圖標尺寸 | 屏幕密度 | 1dp |
---|---|---|---|---|---|
xhdpi 超高分辨率 | 1280*720 | WQVGA | 96*96 | 320 | =2 |
hdpi 高分辨率 | 480*800 | WVGA | 72*72 | 240 | =1.5 |
mdpi 中等分辨率 | 480*320 | HVGA、VGA | 48*48 | 160 | =1 |
ldpi 低分辨率 | 320*240 | QVGA | 36*36 | 120 | =0.75 |
為不同的屏幕尺寸提供不同的圖片:
默認情況下,Android會縮放.png、 .jpg、.gif文件和.9.png,使其呈現合適的尺寸,如果沒有匹配資源可用,將使用默認資源或其他密度相關資源進行縮放。默認資源指的是沒有限定符的資源(在drawable/ 下的就是是默認的資源)。 而縮放可能讓它們失真,所以為了讓圖片有最好的展示,應該為不同屏幕密度提供不同大小的圖片。如果提供一套圖至少提供更高分辨率高密度的位圖而不是提供哪些中等密度設計的位圖。
在res/目錄下創建一個不同的layout文件夾、values文件夾、drawable文件夾等資源文件夾
資源文件夾命名:資源名-屬性1-屬性2-屬性3-屬性4-屬性5.....( values-ldpi、values-land-mdpi)
即以<resources_name>-<qualifier>格式命名系統會根據屏幕的大小自己選擇合適的進行使用。
其中resources_name資源名就是資源類型名,包括:drawable, values, layout, anim, raw, menu, color, animator, xml;
<qualifier> 是一個配置限定符,指定對應的屏幕參數,限定符可以參考以下表:
手機特性 | 資源限定符 | 描述 |
---|---|---|
屏幕尺寸 | small | 小尺寸屏幕 |
normal | 正常大小的屏幕 | |
large | 大尺寸屏幕 | |
xlarge | 超大尺寸的屏幕 | |
分辨率 | 320x240 | values-ldpi-320x240 |
480x320 | values-480x320 | |
800x480 | values-800x480 | |
854x480 | values-854x480 | |
960x540 | values-960x540、values-hdpi-960x540 | |
960x640 | values-960x640、values-xhdpi-960x640 | |
1024x600 | values-mdpi-1024x600 | |
1280x720、1280x800 | values-1280x720 | |
其他 | values-xhdpi-1184x768、values-xhdpi-1280x720、values-xhdpi-1920x1080 | |
密度 | ldpi | 低密度~120dpi |
mdpi | 中密度~160dpi | |
hdpi | 高密度~240dpi、 | |
xhdpi | 超高密度〜320dpi 、 | |
nodpi | 存放無視屏幕密度的資源,如:一些不能被拉伸的圖片放在 drawable-nodpi ,但寬和高要寫wrap_content | |
tvdpi | 主要用於電視,大多數App不需要用到 | |
方向 | land | 橫向屏幕 |
port | 縱向屏幕 | |
版本 | v1~v19 | 新建工程時可以看見,API 1到API 19 |
假設需要適應320x240,480x320分辨率。在res目錄下新建文件夾values-320x240, values-480x320。然后在文件夾 values ,values-320x240 和 values-480x320 下新建xml文件dimens.xml設置字體大小、寬、高等屬性。Android 系統會根據當前設備的屏幕大小、分辨率、屏幕密度、方向、長寬比等信息,選擇相應文件夾進行加載。
注意的是:
values在values-ldpi之前先找到,系統認為values比values-ldpi更接近。
多分辨率兼容性測試
自己定制AVD作為應用程序的測試環境,模擬真實機器大大小和密度,
布局文件可以在預覽看到效果: