Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕密度
原文地址:http://android.xsoftlab.net/training/multiscreen/screendensities.html
這節課將會學習如何通過不同的資源以及獨立的測量單位來支持不同的屏幕密度。
使用密度獨立的像素單位
你必須要避免這么一個陷阱:在設計布局時,使用了絕對的像素單位來定義距離及尺寸。通過像素來定義布局的尺寸是個問題,因為不同的屏幕含有不同的像素密度,所以在不同的設備上使用同一像素長度會造成不同的物理尺寸。因此在指定尺寸時,應該總是使用dp或者sp為單位。dp是一種密度獨立的像素單位,在160dpi時與像素的物理尺寸正好吻合(也就是說160dpi的屏幕dp正好等于sp)。sp同樣也是一種基準單位,但是它一種可伸縮的文本尺寸單位,所以應當在定義文本尺寸時使用該單位(絕不要在布局上使用該單位)。
比如說,在指定兩個View之間的空隙時,應該使用dp,而不是px:
<Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/clickme"android:layout_marginTop="20dp" />在指定文本大小時,總是使用sp:
<TextView android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20sp" />提供備選位圖
因為Android運行于種類繁多的設備上,所以應當為普遍的密度范圍提供相應的位圖資源:low, medium, high及extra-high密度。這有助于提升所有屏幕密度的物理效果及性能。
為了產生這些位圖,應當通過原生資源生成多種密度的圖像:
- xhdpi: 2.0
- hdpi: 1.5
- mdpi: 1.0 (基準線)
- ldpi: 0.75
這意味著如果為xhdpi的設備生成了200x200的圖像,那么應該為hdpi提供的尺寸為150x150,mdpi為100x100,ldpi為75x75。
然后將這些文件分別放入適當的目錄下,在運行時,系統會根據當前的屏幕密度自動選擇正確的位圖:
MyProject/res/drawable-xhdpi/awesomeimage.pngdrawable-hdpi/awesomeimage.pngdrawable-mdpi/awesomeimage.pngdrawable-ldpi/awesomeimage.png接下來,在任何時候引用@drawable/awesomeimage時,系統會基于屏幕的dpi選擇合適的位圖圖像。
最后將啟動圖標放入到mipmap/文件夾下:
res/...mipmap-ldpi/...finished_launcher_asset.pngmipmap-mdpi/...finished_launcher_asset.pngmipmap-hdpi/...finished_launcher_asset.pngmipmap-xhdpi/...finished_launcher_asset.pngmipmap-xxhdpi/...finished_launcher_asset.pngmipmap-xxxhdpi/...finished_launcher_asset.pngNote: 應當將所有的啟動圖標放入到res/mipmap-[density]/文件夾下,而不是drawable/文件夾中,這樣可以確保桌面APP使用了最佳的分辨率圖標。有關更多信息,請參見Managing Projects Overview。
有關更多創建圖標資源的提示與指南,請參見Icon Design Guidelines.
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕密度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode】3月19日打卡-Da
- 下一篇: Android官方开发文档Trainin