Android 屏幕适配以及尺寸计算资料备忘


  • 像素密度名称对比
  • 资源文件夹的命名规则

配置限定符是可以附加到 Android 项目中资源目录的字符串,用于指定在其中设计资源的配置。
  1. 在项目的 res/ 目录中新建一个目录,并使用以下 格式命名: -
    •  是标准资源名称(例如 drawable 或 layout)。
    •  是下表 1 中的配置限定符,用于指定 要使用这些资源的屏幕配置(例如 hdpi 或 xlarge)。
    您可以一次使用多个   — 只需使用短划线分隔每个 限定符。
  2. 将适当的配置特定资源保存在此新目录下。这些资源 文件的名称必须与默认资源文件完全一样。
  3. 尺寸和图片资源通常使用的限定符有,参考资料地址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
swdp

示例:
sw320dp
sw600dp
sw720dp
等等
屏幕的基本尺寸,由可用屏幕区域的最小尺寸指定。 具体来说,设备的 smallestWidth 是屏幕可用高度和宽度的最小尺寸(您也可以将其视为屏幕的“最小可能宽度”)。无论屏幕的当前方向如何,您均可使用此限定符确保应用 UI 的可用宽度至少为  dp。
例如,如果布局要求屏幕区域的最小尺寸始终至少为 600dp,则可使用此限定符创建布局资源  res/layout-sw600dp/。仅当可用屏幕的最小尺寸至少为 600dp 时,系统才会使用这些资源,而不考虑 600dp 所代表的边是用户所认为的高度还是宽度。smallestWidth 是设备的固定屏幕尺寸特性; 设备的 smallestWidth 不会随屏幕方向的变化而改变
设备的 smallestWidth 将屏幕装饰元素和系统 UI 考虑在内。例如,如果设备的屏幕上有一些永久性 UI 元素占据沿 smallestWidth 轴的空间,则系统会声明 smallestWidth 小于实际屏幕尺寸,因为这些屏幕像素不适用于您的 UI。 因此,使用的值应该是 布局所需要的实际最小尺寸(通常,无论屏幕的当前方向如何,此值都是布局支持的“最小宽度”)。
以下是一些可用于普通屏幕尺寸的值:
  • 320,适用于屏幕配置如下的设备:
    • 240x320 ldpi(QVGA 手机)
    • 320x480 mdpi(手机)
    • 480x800 hdpi(高密度手机)
  • 480,适用于 480x800 mdpi 之类的屏幕(平板电脑/手机)。
  • 600,适用于 600x1024 mdpi 之类的屏幕(7 英寸平板电脑)。
  • 720,适用于 720x1280 mdpi 之类的屏幕(10 英寸平板电脑)。
应用为多个资源目录提供不同的 smallestWidth 限定符值时,系统会使用最接近(但未超出)设备 smallestWidth 的值。
此项为 API 级别 13 中新增配置。
另请参阅  android:requiresSmallestWidthDp 属性和  smallestScreenWidthDp 配置字段,前者声明与应用兼容的最小 smallestWidth;后者存放设备的 smallestWidth 值。
如需了解有关设计不同屏幕和使用此限定符的详细信息,请参阅 支持多种屏幕开发者指南。
可用宽度
wdp

示例:
w720dp
w1024dp
等等
指定资源应该使用的最小可用屏幕宽度,以  dp 为单位,由   值定义。在横向和纵向之间切换时,为了匹配当前实际宽度,此配置值也会随之发生变化。
应用为多个资源目录提供不同的此配置值时,系统会使用最接近(但未超出)设备当前屏幕宽度的值。 此处的值考虑到了屏幕装饰元素,因此如果设备显示屏的左边缘或右边缘上有一些永久性 UI 元素,考虑到这些 UI 元素,它会使用小于实际屏幕尺寸的宽度值,这样会减少应用的可用空间。
此项为 API 级别 13 中新增配置。
另请参阅  screenWidthDp 配置字段,该字段存放当前屏幕宽度。
如需了解有关设计不同屏幕和使用此限定符的详细信息,请参阅 支持多种屏幕开发者指南。
可用高度
hdp

示例:
h720dp
h1024dp
等等
指定资源应该使用的最小可用屏幕高度,以“dp”为单位,由   值定义。 在横向和纵向之间切换时,为了匹配当前实际高度,此配置值也会随之发生变化。
应用为多个资源目录提供不同的此配置值时,系统会使用最接近(但未超出)设备当前屏幕高度的值。 此处的值考虑到了屏幕装饰元素,因此如果设备显示屏的上边缘或下边缘有一些永久性 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。

你可能感兴趣的:(android其他)