Android Developers:支持不同的屏幕密度
2013-10-27 09:56
183 查看
这节课程向你展示如何通过提供不同的资源和使用与分辨率无关的测量单位,支持不同屏幕密度。
使用密度无关的像素
——————————————————————————————————————————[b]——[b]——[/b][/b]————————————————
当设计你的布局的时候,你必须避免的一个常见的缺陷是使用绝对像素来定义距离和尺寸。用像素定义你的布局的尺寸是一个问题,因为不同的屏幕有不同的像素密度,所以同样的像素可能在不同的设备上,对应不同的物理尺寸。因此,当指定尺寸的时候,总是使用dp或者sp单位。1dp是一个密度独立的像素,它对应的物理大小是在160dpi中的1像素。1sp是相同的基本单位,但是它以用户首选的文本大小缩放(它是比例独立的像素),所以你在定义文本大小的时候使用这个测量单位(但是不用于布局大小)。
例如,当你指定两个视图之前的空间的时候,使用dp而不是px:
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/clickme"
android:layout_marginTop="20dp" /> <span style="font-family:'Calibri Light',sans-serif; font-size:10pt; line-height:13px; background-color:transparent; color:windowtext"> </span>
当指定文本大小的时候,总是使用sp:
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" />
提供可选的位图
———————————————————————————————————————[b]——[b]——[/b][/b]———————————————————
由于Android运行在具有广泛屏幕密度的设备上,你应该总是根据每个广义的密度度量定制你的位图资源:low,medium,high和extra-high密度。
为了产生这些图像,你应该从你矢量格式的原始资源开始,然后使用下面的大小缩放产生每个密度的图片:
xhdpi:2.0
hdpi:1.5
mdpi:1(基准)
ldpi:0.75
这意味着如果你为xhdpi设备生成一个200*200的图片。你应该为hdpi生成150*150同样的资源,为mdpi 100*100和最后为ldpi设备75*75的图片。
然后,将这些生成的图片放置的res/目录下对应的子目录中。你的应用程序在运行的时候,系统会基于设备屏幕的密度,自动选择正确的图片:
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
然后,你在任何使用引用@drawable/awesomeimage,系统基于屏幕的dpi选择合适的位图。
更多关于为你的应用创建图标资源的提示和指导,查看Icon Design Guidelines。
使用密度无关的像素
——————————————————————————————————————————[b]——[b]——[/b][/b]————————————————
当设计你的布局的时候,你必须避免的一个常见的缺陷是使用绝对像素来定义距离和尺寸。用像素定义你的布局的尺寸是一个问题,因为不同的屏幕有不同的像素密度,所以同样的像素可能在不同的设备上,对应不同的物理尺寸。因此,当指定尺寸的时候,总是使用dp或者sp单位。1dp是一个密度独立的像素,它对应的物理大小是在160dpi中的1像素。1sp是相同的基本单位,但是它以用户首选的文本大小缩放(它是比例独立的像素),所以你在定义文本大小的时候使用这个测量单位(但是不用于布局大小)。
例如,当你指定两个视图之前的空间的时候,使用dp而不是px:
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/clickme"
android:layout_marginTop="20dp" /> <span style="font-family:'Calibri Light',sans-serif; font-size:10pt; line-height:13px; background-color:transparent; color:windowtext"> </span>
当指定文本大小的时候,总是使用sp:
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" />
提供可选的位图
———————————————————————————————————————[b]——[b]——[/b][/b]———————————————————
由于Android运行在具有广泛屏幕密度的设备上,你应该总是根据每个广义的密度度量定制你的位图资源:low,medium,high和extra-high密度。
为了产生这些图像,你应该从你矢量格式的原始资源开始,然后使用下面的大小缩放产生每个密度的图片:
xhdpi:2.0
hdpi:1.5
mdpi:1(基准)
ldpi:0.75
这意味着如果你为xhdpi设备生成一个200*200的图片。你应该为hdpi生成150*150同样的资源,为mdpi 100*100和最后为ldpi设备75*75的图片。
然后,将这些生成的图片放置的res/目录下对应的子目录中。你的应用程序在运行的时候,系统会基于设备屏幕的密度,自动选择正确的图片:
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
然后,你在任何使用引用@drawable/awesomeimage,系统基于屏幕的dpi选择合适的位图。
更多关于为你的应用创建图标资源的提示和指导,查看Icon Design Guidelines。
相关文章推荐
- Android Developers:支持不同的屏幕密度
- Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕密度
- Android 支持不同的屏幕 Supporting Different Screens
- Android官方提供的支持不同屏幕大小的全部方法
- 让android支持不同的语言、屏幕
- Android官方提供的支持不同屏幕大小的全部方法
- Android Training - 适配不同的屏幕(Lesson 1 - 支持不同的屏幕大小)
- Android官方提供的支持不同屏幕大小的全部方法
- Android Developers:支持不同的屏幕密度
- Android官方提供的支持不同屏幕大小的全部方法
- Android 不同屏幕分辨率 密度
- Android官方提供的支持不同屏幕大小的全部方法
- Android 针对多种屏幕进行设计 (二)支持各种屏幕密度
- Android官方提供的支持不同屏幕大小的全部方法
- Android:支持不同分辨率的屏幕设计
- Android官方提供的支持不同屏幕大小的全部方法
- Android官方提供的支持不同屏幕大小的全部方法
- Android Training - 适配不同的屏幕(Lesson 2 - 适配不同屏幕密度)
- Android:支持不同的屏幕
- Android分辨率、密度与多屏幕尺寸支持