原文地址 : http://android.xsoftlab.net/training/basics/supporting-devices/index.html

支持不同的设备

在世界上,Android设备以很多种形状和尺寸呈现。正因为有这么多种设备,你的应用有机会被巨多的用户所使用。为了在Android上尽可能的成功,你的应用需要适配花样繁多的设备配置。一些重要的点就是你应该考虑包含不同的语言、适配各种屏幕尺寸密度、各种各样的Andorid平台版本。

这节课将会教你如何利用可替代资源和其它特性等最基本的平台特性完成适配,这样你的APP才可以只用一个APK就可以在花样繁多的Android设备上提供极佳的用户体验。

支持不同的语言

这对于在APP的代码中使用R.string.xx这种字符串资源并将它们放入一个额外的文件中来说是最好的练习。Android使得每一个Android工程管理这种资源很轻松。

如果你使用的是Android SDK Tools创建的工程,那么在工程的res/目录下有很多种类的资源类型。这里有一些默认的文件比如res/values/string.xml便是存放字符串资源的地方。

创建本地语言目录和字符串文件

为了支持更多的语言,在res/目录下创建一个包含values,连接符,国际标准化组织语言编码作为名称的目录,举个例子,values-es/是一个包含了以es编码的本地语言的简单资源目录。Android会在设备运行的时候读取本地语言设置从而加载合适的本地语言。更多信息请参见:Providing Alternative Resources.

如果决定了将要支持哪种语言,只需要创建一个资源目录和一个字符串资源文件:

MyProject/res/values/strings.xmlvalues-es/strings.xmlvalues-fr/strings.xml

在合适的文件中为每一个本地语言添加字符串值。

在运行时,Android系统会基于用户的设备设置来选择适合的字符串资源。

下面是一些不同语言所对应的字符串资源文件:
English (default locale), /values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="title">My Application</string><string name="hello_world">Hello World!</string>
</resources>

Spanish, /values-es/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="title">Mi Aplicación</string><string name="hello_world">Hola Mundo!</string>
</resources>

French, /values-fr/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="title">Mon Application</string><string name="hello_world">Bonjour le monde !</string>
</resources>

Note:你可以对任何资源类型使用这种本地限定词,比如如果你只想将位图图像提供给局部的版本就可以这么做。更多信息请参见:Localization.

使用字符串资源

你可以在源码或者XML文件中引用这些字符串资源,字符串资源名称通过在文件中定义的< string>元素的name属性定义。

在代码中,可以通过语句R.string.< string_name>引用字符串资源。下面是可接受字符串资源的一些方法:

// Get a string resource from your app's Resources
String hello = getResources().getString(R.string.hello_world);
// Or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

在其它的XML文件中,可以通过语句@string/< string_name>引用字符串资源,下面是如何在XML使用字符串值:

<TextView
    android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" />

Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的语言相关推荐

  1. Android官方开发文档Training系列课程中文版:连接无线设备之通过P2P搜索网络服务

    原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/nsd-wifi-direct.html 本阶段的第一节课 U ...

  2. Android官方开发文档Training系列课程中文版:连接无线设备之网络服务搜索功能

    原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/index.html 引言 Android设备除了可以与服务器 ...

  3. Android官方开发文档Training系列课程中文版:连接无线设备之通过WIFI创建P2P连接

    原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/wifi-direct.html#permissions Wi ...

  4. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  5. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  6. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...

  7. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建

    原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...

  8. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之入门指南

    入门指南 欢迎来到安卓开发训练课,在这里你可以找到一系列课程来描述如何使用现有的代码示例来重新适用到你的APP上,你可以在左侧的导航栏顶部看到在若干个大项里有若干个有组织的子项课程.(导航栏请参见官方 ...

  9. Android官方开发文档Training系列课程中文版:通过NFC共享文件之发送文件到另一台设备

    原文地址:http://android.xsoftlab.net/training/beam-files/index.html 导言 Android允许你通过Android Beam文件传输特性在两台 ...

  10. Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的平台版本

    原文地址 : http://android.xsoftlab.net/training/basics/supporting-devices/platforms.html 每当APP使用了Android ...

最新文章

  1. Android layer-list 使用
  2. Open3d学习计划—高级篇 5(RGBD融合)
  3. Windows Phone 7、XNA的旋转的背景
  4. 多媒体指令(灰度像素最大值)
  5. 关于选择哪些村庄试点新农村建设的讨论
  6. 空服务器安装linux,debian服务器linux服务器web建站搭建linux服务器之Debian安装
  7. 一些有意思的算法代码[转载]
  8. 如何排查 StackOverflow 异常
  9. 我们和全球的朋友一起回家
  10. 阿里巴巴飞天大数据架构体系与Hadoop生态系统
  11. Hadoop--Linux环境下JDK/Hadoop的安装与配置
  12. Ubuntu解除端口占用
  13. PHP 接收 UDP包_UDP详解(广播,组播)(转)
  14. Eclipse之Undefined attribute name 警告解决办法
  15. NASM汇编语言与计算机系统09-8086实模式的内存分配图
  16. mysql的jar包文件在哪找_数据库的jar在哪找
  17. 垃圾回收机制,是不是这样理解?
  18. ios xcode如何在控制台打印frame
  19. mysql variables详解_MySQL information_schema详解 GLOBAL_VARIABLES和SESSION_VARIABLES
  20. linux缺省的shell,Linux操作系统缺省的shell

热门文章

  1. Linux文件系统十问
  2. TVP5150真正的驱动起来了
  3. 计算机专业需要注意什么细节,计算机专业考生复试注意事项
  4. python 数据分析 实际案例_python实战案例:超市营业额数据分析
  5. python复制sheet_python excel sheet复制
  6. 第三方模块config的使用
  7. Chapter7-4_來自獵人暗黑大陸的模型 GPT-3
  8. LeetCode 5268. 找出两数组的不同(set)
  9. LeetCode 1774. 最接近目标价格的甜点成本(DFS / 01背包)
  10. LeetCode 405. 数字转换为十六进制数