Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 496|回复: 0

开发交流:为语言和配置提供可更换的资源(资源文件夹适

[复制链接]

该用户从未签到

发表于 2011-10-24 09:13:17 | 显示全部楼层 |阅读模式
您可以为您的应用程序选择不同的UI语言和硬件配置。注意,尽管您可以使用不同的字符串,布局管理器和其他的很多资源,SDK不会暴露方法支持您显示的指定何种资源需要被加载。Android识别整套资源的硬件和本地化属性,而后适当的加载他们。用户可以在设备的设置面板中更换语言设置。

为了包含可更换资源,创建平行的资源目录,以限定的方式命名这些目录,配置文件也同样适用(语言、屏幕等)。下面的例子给出同时支持英语和法语的方法:
MyApp/
    res/
        values-en/
            strings.xml
        values-fr/
            strings.xml
Android支持多种命名限定和多样的值风格。添加这些信息到资源目录末尾,使用连接号分离。您可以为单个目录添加多段限定。但是他们需要保持一定顺序以方便阅读和理解。下面的例子就是一个带有限定的可绘制对象资源目录的全名:
MyApp/
    res/
        drawable-en-rUS-port-160dpi-finger-keysexposed-qwerty-dpad-480x320/
更具代表性的,您可能需要指定一些资源配置参数。您也许需要除去完整列表中的一些值,但是还有很多很多值被保留在列表中:
MyApp/
    res/
        drawable-en-rUS-finger/
        drawable-port/
        drawable-port-160dpi/
        drawable-qwerty/
限定词值
语言两字节ISO 639-1 低位的语言编码,比如:en, fr, es
区域两字节ISO 3166-1-alpha-2 带有小写"r"前缀的大写地区编码。如: rUS, rFR, rES
屏幕方向port, land, square
屏幕像素密度92dpi, 108dpi, etc.
触摸屏类型notouch, stylus, finger
用户是否可以使用键盘keysexposed, keyshidden
默认的文字输入方法nokeys, qwerty, 12key
默认的非触摸导航方法notouch, dpad, trackball, wheel
屏幕尺寸320x240, 640x480, etc. 较大的尺寸必须首先声明。

次列表不包括设备定制的参数,比如信号、商标等。所有应用程序应该知道的信息都需要按照上面的列表信息编码。
这里有一些命名的通用原则:
.         值之间用连接号连接
.         值是大小写敏感的,比如
o    一个指定的drawable目录必须命名为drawable-port,而不是drawable-PORT。
.         每种限定词只能有一种选择,您不能命名目录为drawable-rEN-rFR/。
.         您可以添加多种限定词,但是每个限定词必须在在上面列表中。比如drawable-en-rUS-land表明其用于直板的美式英语设别上。
.        带有限定词的目录不能被嵌套,比如,res/drawable/drawable-en是不允许的。
.        资源引用在语法中表示为未加修饰的表达式,比如 MyApp/res/drawable-port-92dp/myimage.png,在XML中表示为:@drawable/myimage,在代码中表示为:R.drawable.myimage。
Android如何找到最匹配的目录
Android将根据配置文件挑选资源,挑选过程为:
1.          排除所有和配置文件中指定的当前设备参数不匹配的资源。比如,如果屏幕像素密度为108dpi,下面所列出的目录中,只有MyApp/res/drawable-port-92dpi/会被排除。
MyApp/res/drawable/myimage.png
MyApp/res/drawable-en/myimage.png
MyApp/res/drawable-port/myimage.png
MyApp/res/drawable-port-92dpi/myimage.png
2.              接下来系统将根据限定字的多少来筛选。例如,如果您的本地系统识别为en-GB编码的便携设备,随后我们还剩两个目录可以匹配。
MyApp/res/drawable/myimage.png
MyApp/res/drawable-en/myimage.png
MyApp/res/drawable-port/myimage.png
3.              选择机制将根据配置文件中定义的优先级,优先级定义于上面的列表顺序中。
MyApp/res/drawable-en/myimage.png
MyApp/res/drawable-port/myimage.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-10 19:07 , Processed in 0.299030 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表