Android资源与国际化

基本指南编程android-5

MGI 手段 它们是Android应用程序的基本组成部分。 只要有可能 我们将它们与代码分开这样,我们将实现更易于维护的应用程序。 如果我们组织得当,Android还将根据配置(通常是屏幕尺寸和用户的语言)为我们选择合适的元素。

基本资源:图像和文本

MGI 文本 它们必须始终与代码分开。 如果不这样做,维护代码将使我们付出更多的代价:我们将不得不审查所有事件,并且每次都必须进行更改时,我们可能会忘记一些事件。 最糟糕的是,我们的应用程序将无法国际化。

因此,不建议将文本放入代码中。 唯一的例外可能是不适合最终用户使用的消息,例如控制台输出消息。 但总的来说,我们所有的文本都必须放在 单独的资源文件。 我们将调用该文件 字符串.xml,那么您在项目中的完整路径将是 res / values / strings.xml.

一个strings.xml文件将具有类似于以下内容:

<资源>绳子 名称=“字符串_1">文本1
    <绳子 名称=“字符串_2">文本2

现在,在我们的代码中,我们可以使用诸如getResources()。GetString(R.string.string_1)之类的句子,或在我们的布局(如@ string / string_1)中检索这些文本。 通过这种方式,我们实现了我们想要的:代码变得与资源无关。

我们将定期使用的其他资源是 图像。 为此,我们在项目中有几个文件夹,例如res / drawable,res / drawable-hdpi,res / drawable-xhdpi等。

“ drawable”后面的后缀是指 屏幕密度。 每个Android设备在每个屏幕上的像素密度都分为几组:

  • ldpi(小x0,75)
  • mdpi(平均x1)
  • hdpi(大x1,5)
  • xhdpi(超大x2)
  • xxhdpi(超大x3)

这样,相同的图像可以适应 不同的屏幕密度 没有出现畸形。 建议您在每个文件夹中都有一个图像副本,并遵守比例(以mdpi为基数并等于1),尽管您也可以只使用其中一个,然后Android会自动对图像进行缩放操作其他决议。 但是,建议覆盖所有文件夹,以节省系统额外的精力。

“可绘制”文件夹将不包含图像,我们仅将其用于高级元素(例如选择器)的xml定义。

OTROS RECURSOS

在项目的/ res目录中可以包含更多资源。 声音,颜色定义(类似于文本),应用程序的尺寸,视图的样式等等。

对于那些有兴趣进一步了解这些资源的人,可以咨询 官方的Android文档.

Android的国际化

借助图像,我们已经对 Android上的替代资源系统:如果我们有xhdpi密度屏幕(例如,Galaxy S3的屏幕),则Android会优先选择drawable-xhdpi目录中的图像。

该系统可用于区分许多其他配置:法线或横向,驾驶或法线模式,夜间或法线模式...同样,我们建议 官方的Android文档 知道所有细节。 我们已经讨论过如何根据屏幕的密度提供图像,现在我们将重点介绍应用程序的另一个非常重要的用途: 国际化.

如果我们希望以多种语言提供文本,则必须为strings.xml文件的每个副本添加一个不同的文件夹。 因此,如果我们要将应用程序移植到英语和法语,则将具有以下三个目录:

  • res /值(默认值)
  • res /值-en
  • res /值-fr

也就是说,将具有特定语言的ISO代码后缀的文件夹添加到该文件夹​​中,并且我们会将默认文本保留在该文件夹中而没有后缀。 后者非常重要,因为除了屏幕密度外,我们总是必须给 预设值 所有资源。 当我们需要任何类型的资源时,Android会寻找最合适的资源,如果找不到任何资源,我们会发现应用程序意外关闭。 这就是为什么必须始终存在默认情况下我们选择的语言,并且所有资源都具有其默认值的原因。

通过这种方式,我们再次得到了想要的东西:除了将文本与代码分离之外,我们现在还可以 不同语言的应用 根本不用碰我们的代码。

当然,生成替代资源的系统是可组合的。 遵循我们之前指出的链接,我们将看到后缀按什么顺序排列。 如果遵循本教程中指示的简单示例,则可以考虑使用仅适用于英文版本的图像。 这是通过创建文件夹res / drawable-en-xhdpi或我们需要的任何其他屏幕密度来实现的。 这样,我们可以提供各种各样的资源,而不必担心选择正确的资源。 当然:不要忘记屏幕密度是唯一不需要默认值的修改器。 其他所有都需要一个默认值,否则我们有可能导致应用程序崩溃。


你对。。。感兴趣:
如何在Android上删除病毒
在 Google 新闻上关注我们

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:Actualidad Blog
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。