`
Ivan_Ru
  • 浏览: 46305 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android屏幕适配-资源文件夹命名与匹配规则

阅读更多

说明:本文档目的为分析android工程res目录下的资源文件夹(drawable,values,layout等)在屏幕适配方面的限定与适配方法。

1、 Res下文件夹命名方式
1. 可用的命名属性
文档1中的表格“Table 2. Configuration qualifier names. ”中有说明(表格太大,不方便在此张贴),表格中的"Configuration"项集就是Android全体可用命名属性集,表格此项的排列顺序即是各个属性的优先级别顺序。

2. 命名方法与要求
1) 命名不区分大小写;
2) 命名形式:资源名-属性1-属性2-属性3-属性4-属性5.....
资源名就是资源类型名,包括:drawable, values, layout, anim, raw, menu, color, animator, xml;
属性1-属性2-属性3-属性4-属性5.....就是上述的属性集内的属性,如:-en-port-hdpi;
注意:各属性的位置顺序必须遵守优先级从高到低排列!否则编译不过

3. 实例说明
1) 把全部属性都用上的例子(各属性是按优先级先后排列出来的)
values-mcc310-en-sw320dp-w720dp-h720dp-large-long-port-car-night-ldpi-notouch-keysexposed-nokeys-navexposed-nonav-v7
2) 上述例子属性的中文说明
values-mcc310(sim卡运营商)-en(语言)-sw320dp(屏幕最小宽度)-w720dp(屏幕最佳宽度)-h720dp(屏幕最佳高度)-large(屏幕尺寸)-long(屏幕长短边模式)-port(当前屏幕横竖屏显示模式)-car(dock模式)-night(白天或夜晚)-ldpi(屏幕最佳dpi)-notouch(触摸屏模类型)-keysexposed(键盘类型)-nokey(硬按键类型)-navexposed(方向键是否可用)-nonav(方向键类型)-v7(android版本)

2、 定位最佳文件夹
1. 定位算法

providingResource
特殊说明:关于屏幕大小size相关的属性不在步骤1的过滤清除条件里(dpi属性和screen size属性):
1) 对于dpi属性系统的选择方法是"best match"---即如果没有找到准确的属性,可以接着寻找最接近的属性文件夹。例如:我的g7手机,应该是values-hdpi,但如果没有values-hdpi,则可以找出最接近的文件夹(先找values-xhdpi到values-mdpi到values最后到values-ldpi,注意values在values-ldpi之前先找到,系统认为values比values-ldpi更接近我的values-hdpi属性);

2) 对于screen size属性系统的选择方法是"向下best match",即如果没找到准确的属性,只可以接着在比自身属性小的文件夹里找最接近的属性文件夹。例如:我的g7手机,应该是values-normal,但如果没有values-normal,则可以找出最接近的文件夹(先找values再到values-small,注意,系统认为values比values-small更接近我的values-normal属性,但之后就不会再找values-large与values-xlarge了,因为是"向下best match",large与xlarge都比normal大)。
2. 实例说明
工程有如下文件夹:
drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
手机属性:
Locale = en-GB
Screen orientation = port
Screen pixel density = hdpi
Touchscreen type = notouch
Primary text input method = 12key

1) 清除包含任何与手机配置有冲突的属性的资源文件夹(蓝色字体表现被清除)
drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
注意:因为dpi属性使用"best match"选择,所以drawable-port-ldpi/
没被清除。
2) 选择文档1中的表格“Table 2. Configuration qualifier names. ”最高优先级的属性(MCC最高,然后依次向下选择)。
3)  有包含上述属性的文件夹吗?
如果没有,跳转步骤2,选择下一优先级高的属性;
如果有,继续步骤4;
4) 清除不包含此属性的所有文件夹
drawable/
drawable-en/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
5) 重复步骤2和3,直到步骤4中只剩下一个文件夹则返回。例子中,屏幕方向是下一个最高优先级的属性,所以可以清除两个文件夹:
drawable-en/
drawable-en-port/
drawable-en-notouch-12key/

最终找到的文件夹就是drawable-en-port/

由上述过程可看出,匹配是看最高优先级别的属性,而不是一共匹配到的属性数量,例如:values-en-normal-hdpi的手机,values-en匹配比vaues-normal-hdpi更合适。

3、 备注
1. 文档1中的表格“Table 2. Configuration qualifier names. ”列出的属性集并不是一直不变的,有些新属性是在高级的android version才加入的,系统在识别到此新属性时会自动加上支持新属性的android最低版本属性,例如:xhdpi是android 2.2(sdk[img]/images/smiles/icon_cool.gif" alt="[/img]新加入的,则values-xhdpi系统会自动认为是values-xhdpi-v8,这样新属性一定不会在android旧版本中匹配到了;
2. 对于指定分辨率的属性(例如:values-hdpi-1024x600,values-hdpi-960x540,values-mdpi-1024x600),指定分辨率属性并没出现在官网的匹配属性集里,也没找到对于分辨率属性的详细说明,经测试,这个分辨率属性匹配并不准确,例如Galaxy Nexus(1280x720 ),却可以匹配到values-hdpi-1024x600,因此希望最好不使用分辨率属性。

4、 参考文档
1  :Android资源屏幕适配官方文档:
http://developer.android.com/guide/topics/resources/providing-resources.html

 

分享到:
评论
2 楼 a220315410 2013-06-20  
好吧,花了些功夫,才搞明白,values-hdpi-1024x600的确是以px为单位的。
但是,Galaxy Nexus(1280x720)因为有一个虚拟按键的关系,所以,所以实际上app可用的大小是没1280x720这么大的,实际也就大概1190x720或者1280x630的尺寸可以用。

按照类似与large、normal的匹配原则,找小尺寸的资源,不找大尺寸的资源,所以,最终会匹配到values-hdpi-1024x600上。

1 楼 a220315410 2013-06-19  
关于使用分辨率的问题,我看到的另一份资料说的是
values-hdpi-1024x600这里的1024x600是以dp为单位的,
所以Galaxy Nexus的应该加载的文件为values-hdpi-640x360.
我不确定两种说法哪个是对的,不过,可能我们可以试一下。

相关推荐

    Android屏幕适配资源

    四、资源适配的优点 1. 提高用户体验:用户在不同设备上都能获得一致的视觉效果和操作体验。 2. 减少开发工作量:无需为每个设备单独编写代码,只需维护一套适配资源。 3. 兼容性提升:适配不同屏幕尺寸和密度,...

    Android各国语言Values文件夹命名规则

    Android各国语言Values文件夹命名规则

    Android-今日头条屏幕适配方案终极版一个极低成本的Android屏幕适配方案

    综上所述,Android-今日头条屏幕适配方案终极版通过结合比例计算、响应式布局、资源目录适配以及第三方库等多种方法,实现了对不同设备的低成本、高效适配。对于任何希望提升Android应用跨设备兼容性的开发者来说,...

    android-support-v4-v7-v13-v14-v17(官方最新完整版)

    android-support-v4-v7-v13-v14-v17(官方最新完整版),官方最新版的,压缩包内包含android-support-v4、android-support-v7-appcompat,android-support-v7-cardview,android-support-v7-gridlayout,android-support-...

    Android屏幕适配smallestWidth适配尺寸文件

    Android系统会根据这个值选择最匹配的资源文件夹,以确保应用在不同尺寸的屏幕上都能正确显示。 在给定的压缩包文件中,我们看到多个以`values-swXXXdp`命名的文件夹,如`values-sw360dp`、`values-sw300dp`等。...

    android屏幕适配工具

    这样,当设备启动应用时,Android会自动选择最匹配当前设备屏幕配置的资源目录。 现在我们关注的"autolayout.jar"工具,这是一个自动化处理屏幕适配的工具,它能够帮助开发者快速生成针对不同屏幕尺寸的资源目录和...

    android-sdk-4.2.2 android-sdk-4.2.2-platforms

    在SDK的"platforms"子目录中,每个Android版本都有一个对应的文件夹,例如"android-17",这个文件夹包含了该版本的系统映像、API文档、库文件等资源。 对于"标签"sdk-4.2.2,这是标识这个压缩包与Android 4.2.2 SDK...

    android-sdk-windows-r24.4.1

    android-sdk-windows-r24.4.1,windows系统使用,下载解压后,双击SDK Manager.exe进行工具选装。必装:Tools文件夹下的Android SDK Platform-tools和Android SDK Build-tools、Extras文件夹下的全部。然后任意选一个...

    Android资源命名规范

    Android 资源命名规范是 Android 开发中一个很重要的规范,目的是为了让代码更加清晰、易读、易维护本文将详细介绍 Android 资源命名规范的各种规则和命名约定。 一、图片资源命名规则 在 Android 中,图片资源的...

    android-gif-drawable解决5.0适配

    `android-gif-drawable`库优化了内存管理,确保在不使用时正确释放资源,减少内存占用。 2. **性能优化**:在Android 5.0之前,系统对GIF的解码效率较低,可能导致卡顿。该库使用了高效的解码算法,提高播放流畅性...

    Google的Android屏幕适配PPT

    1. **资源文件命名**:为了区分不同设备上的资源,Android允许开发者创建多个资源文件夹,并按照特定的命名规则进行命名。例如,对于不同密度的图片资源,可以创建以下文件夹: - `drawable-ldpi` - `drawable-...

    Android屏幕适配

    #### 一、资源文件夹命名方式及匹配规则 在进行Android应用开发时,屏幕适配是一项极为重要的工作。为了确保应用能够在不同尺寸、分辨率的设备上展现出良好的用户体验,开发者需要对资源文件进行合理的组织与命名。...

    android_px_多屏幕适配生成工具和资源

    本文将深入探讨如何利用Android的工具和资源来实现高效的多屏幕适配。 首先,我们来看标题中的“px”,这指的是像素(Pixel),是屏幕上的最小显示单元。在Android中,像素并不直接对应于屏幕的实际大小,因为不同...

    dimen屏幕适配2018-8最新资源

    Android系统通过使用不同的资源目录来实现对不同屏幕尺寸的适配,这些目录通常以"values-mdpi", "values-hdpi", "values-xhdpi", "values-xxhdpi"等形式命名,表示中密度(mdpi)、高密度(hdpi)、超高密度(xhdpi...

    Android 处理HTML-HTML适配屏幕.pdf

    为了实现良好的屏幕适配,开发者需要充分理解Android的屏幕分类和资源管理机制,利用dp单位和比例缩放来设计可扩展的UI,同时配合WebView的特性处理HTML内容。此外,测试是确保适配成功的关键,开发者应该在多种真实...

    android屏幕适配demo

    总的来说,"android屏幕适配demo"是一个综合了多种屏幕适配技术的实例,包括使用dp单位、自定义适配器、多版本资源、`DisplayMetrics`以及优化的图像处理。通过理解和实践这个demo,开发者可以更好地掌握如何使自己...

    ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar

    ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar 要是需要最新的,下载地址: http://code.google.com/p/ksoap2-android/

    Android-Android屏幕适配方案自动生成不同分辨率的值

    本篇文章将深入探讨“Android-Android屏幕适配方案自动生成不同分辨率的值”这一主题,帮助开发者构建能够在各种设备上完美显示的应用。 首先,我们需要理解Android屏幕的基本概念。Android屏幕主要由屏幕尺寸...

    android 屏幕适配方案小工具(可执行jar包)

    android 屏幕适配方案小工具(可执行jar包)

    Android dimens sw 屏幕适配文件

    Android dimens sw 屏幕适配文件 values-sw300dp values-sw310dp values-sw320dp values-sw330dp values-sw340dp values-sw350dp values-sw360dp values-sw370dp values-sw380dp values-sw390dp values-sw400dp ...

Global site tag (gtag.js) - Google Analytics