当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    关于Android中drawable必知的一些规则

    栏目:win服务器问题汇总 时间:2019-11-22 01:50

    前言

    一入 Android 深似海,相信很多 Android 开发者深有体会,Android 系统版本的碎片化,Android 硬件设备的多样性,第三方 Rom 的不确定因素。现在想开发一个合格的商业化 App 真的不容易,先不说别的,应用的兼容性就是一项技术和耐心的双重考验,想完美适配各种情况可以说是不可能的,往往都是在人力和适配率之间寻找平衡,今天要说的 drawable 就是需要适配的一个重要角色。

    配置限定符

    对于不同的屏幕密度、不同的设备方向,不同的语言和区域,都会涉及到备选 drawable 资源,在运行时,Android 会检测当前设备配置并根据具体规则(后面会提到)为应用加载合适的资源。下面是可以使用的配置限定符,需要说明的是这些配置限定符不仅对 drawable 有效,对其他资源类型(如:layout 等)也有效:

         移动国家代码 (MCC):mcc310, mcc310-mnc004, mcc208-mnc00

         语言和区域:en, fr, en-rUS 等等

         布局方向:ldrtl(从右到左)ldltr(从左到右)

         smallestWidth:sw<N>dp 如:sw320dp, sw600dp, sw720dp 等等,屏幕可用高度和宽度的最小尺寸,屏幕的“最小可能尺寸”。

         可用宽度:w<N>dp 如:w720dp, w1024dp 等等,指定资源应该使用的最小可用屏幕宽度,以 dp 为单位,由 <N> 值定义。在横向和纵向之间切换时,为了匹配当前实际宽度,此配置值也会随之发生变化。

         可用高度:h<N>dp 如:h720dp, h1024dp 等等,指定资源应该使用的最小可用屏幕高度,以dp为单位,由 <N> 值定义。 在横向和纵向之间切换时,为了匹配当前实际高度,此配置值也会随之发生变化。

         屏幕尺寸:small, normal, large, xlarge

         屏幕纵横比:long 宽屏,如 WQVGA、WVGA、FWVGA;notlong 非宽屏,如 QVGA、HVGA 和 VGA

         屏幕方向:port 设备处于纵向(垂直),land 设备处于横向(水平)

         UI 模式:car, desk, television, appliance, watch

         夜间模式:night 夜间,nontight 白天

         屏幕像素密度:ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi, nodpi, tvdpi

         触摸屏类型:notouch, finger

         键盘可用性:keysexposed, keyshidden, keyssoft

         主要文本输入法:nokeys, qwerty, 12key

         导航键可用性:navexposed 导航键可供用户使用,navhidden 导航键不可用

         主要非触摸导航方法:nonav, dpad, trackball, wheel

         平台版本(API 级别):v3, v4, v7 等等,如 v1 对应于 API 级别 1,v4 对应于 API 级别 4

    如果你认真研究下每个配置限定符,你就会体会到:想完美适配各种情况可以说是不可能的,其实我们平时最常用的也是基本必须要用的就是屏幕像素密度,这里有必要详细的说一下该参数:

          ldpi:低密度屏幕;约为 120dpi。

          mdpi:中等密度(传统 HVGA)屏幕;约为 160dpi。