- 像素密度名称对比
![](http://cc.cocimg.com/api/uploads/20151029/1446101474789673.jpg)
- 资源文件夹的命名规则
配置限定符是可以附加到 Android 项目中资源目录的字符串,用于指定在其中设计资源的配置。
- 在项目的 res/ 目录中新建一个目录,并使用以下 格式命名: <resources_name>-<qualifier>
- <resources_name> 是标准资源名称(例如 drawable 或 layout)。
- <qualifier> 是下表 1 中的配置限定符,用于指定 要使用这些资源的屏幕配置(例如 hdpi 或 xlarge)。
您可以一次使用多个 <qualifier> — 只需使用短划线分隔每个 限定符。 - 将适当的配置特定资源保存在此新目录下。这些资源 文件的名称必须与默认资源文件完全一样。
- 尺寸和图片资源通常使用的限定符有,参考资料地址https://developer.android.com/guide/practices/screens_support.html#qualifiers 和 https://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources
尺寸 small 适用于小尺寸屏幕的资源。 normal 适用于正常尺寸屏幕的资源。(这是基线尺寸。) large 适用于大尺寸屏幕的资源。 xlarge 适用于超大尺寸屏幕的资源。 密度 ldpi 适用于低密度 (ldpi) 屏幕 (~120dpi) 的资源。 mdpi 适用于中密度 (mdpi) 屏幕 (~160dpi) 的资源。(这是基线 密度。) hdpi 适用于高密度 (hdpi) 屏幕 (~240dpi) 的资源。 xhdpi 适用于超高密度 (xhdpi) 屏幕 (~320dpi) 的资源。 xxhdpi 适用于超超高密度 (xxhdpi) 屏幕 (~480dpi) 的资源。 xxxhdpi 适用于超超超高密度 (xxxhdpi) 屏幕 (~640dpi) 的资源。此限定符仅适用于 启动器图标,请参阅上面的注。
smallestWidth |
sw<N>dp
示例:
sw320dp
sw600dp
sw720dp
等等
|
屏幕的基本尺寸,由可用屏幕区域的最小尺寸指定。 具体来说,设备的 smallestWidth 是屏幕可用高度和宽度的最小尺寸(您也可以将其视为屏幕的“最小可能宽度”)。无论屏幕的当前方向如何,您均可使用此限定符确保应用 UI 的可用宽度至少为
<N>dp。
例如,如果布局要求屏幕区域的最小尺寸始终至少为 600dp,则可使用此限定符创建布局资源
res/layout-sw600dp/。仅当可用屏幕的最小尺寸至少为 600dp 时,系统才会使用这些资源,而不考虑 600dp 所代表的边是用户所认为的高度还是宽度。smallestWidth 是设备的固定屏幕尺寸特性;
设备的 smallestWidth 不会随屏幕方向的变化而改变。
设备的 smallestWidth 将屏幕装饰元素和系统 UI 考虑在内。例如,如果设备的屏幕上有一些永久性 UI 元素占据沿 smallestWidth 轴的空间,则系统会声明 smallestWidth 小于实际屏幕尺寸,因为这些屏幕像素不适用于您的 UI。 因此,使用的值应该是
布局所需要的实际最小尺寸(通常,无论屏幕的当前方向如何,此值都是布局支持的“最小宽度”)。
以下是一些可用于普通屏幕尺寸的值:
应用为多个资源目录提供不同的 smallestWidth 限定符值时,系统会使用最接近(但未超出)设备 smallestWidth 的值。
此项为 API 级别 13 中新增配置。
另请参阅
android:requiresSmallestWidthDp 属性和
smallestScreenWidthDp 配置字段,前者声明与应用兼容的最小 smallestWidth;后者存放设备的 smallestWidth 值。
如需了解有关设计不同屏幕和使用此限定符的详细信息,请参阅
支持多种屏幕开发者指南。
|
可用宽度 |
w<N>dp
示例:
w720dp
w1024dp
等等
|
指定资源应该使用的最小可用屏幕宽度,以
dp 为单位,由
<N> 值定义。在横向和纵向之间切换时,为了匹配当前实际宽度,此配置值也会随之发生变化。
应用为多个资源目录提供不同的此配置值时,系统会使用最接近(但未超出)设备当前屏幕宽度的值。 此处的值考虑到了屏幕装饰元素,因此如果设备显示屏的左边缘或右边缘上有一些永久性 UI 元素,考虑到这些 UI 元素,它会使用小于实际屏幕尺寸的宽度值,这样会减少应用的可用空间。
此项为 API 级别 13 中新增配置。
另请参阅
screenWidthDp 配置字段,该字段存放当前屏幕宽度。
如需了解有关设计不同屏幕和使用此限定符的详细信息,请参阅
支持多种屏幕开发者指南。
|
可用高度 |
h<N>dp
示例:
h720dp
h1024dp
等等
|
指定资源应该使用的最小可用屏幕高度,以“dp”为单位,由
<N> 值定义。 在横向和纵向之间切换时,为了匹配当前实际高度,此配置值也会随之发生变化。
应用为多个资源目录提供不同的此配置值时,系统会使用最接近(但未超出)设备当前屏幕高度的值。 此处的值考虑到了屏幕装饰元素,因此如果设备显示屏的上边缘或下边缘有一些永久性 UI 元素,考虑到这些 UI 元素,同时为减少应用的可用空间,它会使用小于实际屏幕尺寸的高度值。 非固定的屏幕装饰元素(例如,全屏时可隐藏的手机状态栏)并不在考虑范围内,标题栏或操作栏等窗口装饰也不在考虑范围内,因此应用必须准备好处理稍小于其所指定值的空间。
此项为 API 级别 13 中新增配置。
另请参阅
screenHeightDp 配置字段,该字段存放当前屏幕宽度。
如需了解有关设计不同屏幕和使用此限定符的详细信息,请参阅
支持多种屏幕开发者指南。
|
sw-xxxx-dp的计算公式是 sw *160/dpi
举例来说,一个资源文件夹命名为
values-sw360dp-xhdpi
,其含义就是,这个文件夹下的资源适用于,
屏幕最小尺寸在360dp下的、像素密度在 240dpi 到 320dpi 下
手机。
- 为了适配 Android 平台尺寸繁多的屏幕,使用 dp 作为单位来规定尺寸,px 和 dp 的换算公式为 px = dp * ( dpi / 160 ) ,其中在 160 dpi 像素密度下,规定 1 px = 1 dp。但是,使用 dp 作为尺寸单位,仅仅能够保证在同一数值,在不同分辨率的屏幕上,展示出差不多大小的样式而已,对于屏幕物理尺寸相差大的屏幕来说,同一数值 dp 展示出来的效果差别还是比较大的。
为了解决这一问题,需要针对不同的物理尺寸进行 dp 适配。
举例来说,有这么几个资源文件
- values-sw320dp 屏幕最小尺寸在320dp的手机,一般来说分辨率为320*480 hdpi 的手机
- values-sw360dp 屏幕最小尺寸是360dp的,一般来说分辨率为720*1280 xhdpi 、540*960 hdpi、1080*1920 xxhdpi 的手机
- values-sw360dp-xhdpi 屏幕最小尺寸是360dp的,一般来说分辨率为720*1280 xhdpi 的手机
- values-sw480dp 屏幕最小尺寸在480dp的,一般来说分辨率为 480*800 mdpi 的手机
那么为了解决上面红色字体的问题,就需要根据物理尺寸来对尺寸再做一次适配。
目前主流的手机屏幕参数一般是 720*1280 xhdpi ,也就是说 1dp = 2px ,适用于上面的
values-sw360dp-xhdpi
以这个文件夹中的尺寸作为基准,180dp就是屏幕宽度的一半,那么在
values-sw480dp
中,屏幕宽度一半应该就是240 ,比例应该是 1 : 1.33。而对于
values-sw320dp
比例应该是 1: 1.125。