Android res资源查找

       Android手机分辨率越来越多,对于外发的三方应用,如何对尽量多不同分辨率的手机进行自适应,就显得尤为重要。自适应良好,一方面可以降低apk的大小,为用户下载节省流量;在不同的机型上均拥有良好的效果,更容易吸引用户;也可以减少工程师的开发时间。那么,如何做到自适应呢?

  • 代码中获取屏幕分辨率,按照比例自定义布局。该方法会造成代码阅读困难,合理使用;
  • 合理配置资源文件(res目录)。
常用资源目录说明

常用的缺省目录和对应资源类型在SDK帮助中有表格列出,简单摘抄如下

res/animator

存放定义了property animations(android 3.0新定义的动画框架)的XML文件

res/anim/

存放定义了补间动画(tweened animation)或逐帧动画(frame by frame animation)的XML文件。(该目录下也可以存放定义property animations的XML文件,但是最好还是分开存放)

res/raw/

存放直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。

res/drawable/

存放能转换为绘制资源(Drawable Resource)的位图文件(后缀为.png, .9.png, .jpg, .gif的图像文件)或者定义了绘制资源的XML文件

res/color/

存放定义了颜色状态列表资源(Color State List Resource)的XML文件

res/layout/

存放定义了用户界面布局的XML文件

res/menu/

存放定义了应用程序菜单资源的XML文件

res/values/

存放定义了多种类型资源的XML文件

这些资源的类型可以是字符串,数据,颜色、尺寸、样式等等

res/xml/

存放任意的XML文件,在运行时可以通过调用Resources.getXML()读取

资源限定符 - 详细见附件

       -命名规则

能够给单一的资源集合指定多个限定符,限定符用短横线分开。例如:drawable-en-rUS-land

限定符必须按照上表列出的顺序来使用,如:

错误用法:drawable-hdpi-port

正确用法:drawable-port-hdpi

可选资源目录不能嵌套,如:不能用以下这样的目录结构:

res/drawable/drawable-en/

值是大小写敏感的。资源编译器为了避免有关大小写敏感的文件系统问题,会把目录名转换成小写。命名中的任何大写字母只是为了方便阅读。

每个限定符类型只能支持一种资源值。

错误的命名eclipse会有提示,不能只能生成R文件。

应用程序资源匹配算法


各分辨率资源查找优先级

1080P:

xxhdpi>xhdpi>nodpi>hdpi>mdpi

hdpi:

hdpi>xhdpi>xxhdpi>mdpi>nodpi

xhdpi:

xhdpi>xxhdpi>hdpi>nodpi>mdpi

猜你喜欢

转载自vvlavida.iteye.com/blog/1953123