「Efficient Android Threading 笔记」- C1 Android Components and the Need for Multiprocessing Android RecyclerView Android Socket Programming Supporting Multiple Screens Make a Reusable UI in Android App Development 如何在 Android Studio 中包含 *.so library,并使用库中定义的方法? 使用 SpannableString 格式化字符串,实现前景色、下划线、超链接、图文混排等 如何使用 bound service 完成进程间通信? 创建自定义视图 Creating custom views 通过 Android Theme & Style 定制应用的样式 「译」Android ViewPropertyAnimator 介绍 Android Animation Interpolator - Android 动画插值器源码笔记 「译」Android Animation in Honeycomb by Chet Haase(Android 3.0系统中的动画机制) 从 Android Sample ApiDemos 中学习 android.animation API 的用法 如何学习 Android Animation? 如何实现 Android ListView「上拉加载更多」? 「译」向Big Nerd Ranch提问:为什么Fragment在Android App开发中非常重要? 分类整理我在 SegmentFault 上针对某些问题作的回答 Android Servcie 后台服务总结笔记 如何在Android设备旋转时暂存数据以保护当前的交互状态? Android Message Handler 消息处理机制总结笔记 如何获取FragmentTabHost中指定标签页的Fragment? Fragment子类必须包含一个public无参构造器 如何更新及替换ViewPager中的Fragment? 如何使用Android UI Fragment开发“列表-详情”界面? 一个Android音频文本同步的英文有声读物App的开发过程 「Android编程权威指南笔记」Android应用本地化 通过jfeinstein10/SlidingMenu实现Android侧滑菜单 为Ubuntu14.04部署Android App的Eclipse开发环境 「Android编程权威指南笔记」使用ListFragment显示列表 「Android编程权威指南笔记」SDK版本与兼容 「Android编程权威指南笔记」Android布局和组件 「Android编程权威指南笔记」UI Fragment 「Android编程权威指南笔记」Activity 第一次开发iOS App和Android的对比总结笔记 「App Training笔记」创建第一个应用 「App Training笔记」开发入门训练大纲 Android APP - 从远程FTP服务器下载文件到本地

「Android编程权威指南笔记」Android应用本地化

2015年04月12日

本地化是一个基于设备语言设置,为应用寻找合适资源的过程:排除不兼容的目录;按优先级表筛选不兼容目录。
常用优先级:

移动国家代码MCC > 语言代码 > 布局方向

res/values/         # 保留默认资源,否则当android无法找到匹配资源,而默认资源又不存在时,应用将崩溃。
res/values-zh/      # 创建带有目标语言配置修饰符的资源子目录。
res/values-land/    # 横屏模式。
res/values-zh-land/ # 多重配置修饰符,修饰符必须按照优先级顺序排列。

几个原则:

  • drawable目录通常按照屏幕显示密度要求,具有三类修饰符:-mdpi、-hdpi和-xhdpi。不过,Android决定使用哪一类drawable资源并不是简单地匹配设备的屏幕显示密度,也不是在没有匹配的资源时直接使用默认资源。
  • 无需在res/drawable/目录下放置默认的drawable资源。
  • 资源的名字只能由小写字母组成并且不能包含空格。
  • 无论是在XML还是在代码中引用资源,引用都不应包括文件的扩展名;因此在同一子目录下,不能以文件的扩展名为依据,来区分命名相同的资源文件。
  • 所有资源都必须保存在res/目录的子目录下。尝试在res/目录的根目录下保存资源将会导致编译错误。
  • res子目录的名字直接与Android编译过程绑定,因此无法随意进行更改。
  • 无法在res/目录下创建多级子目录,当资源文件很多时,唯一能做的就是有意识的对资源命名,使其可按文件名进行排序,以便于查找某个特定文件。布局文件通常以其定义的视图类型名作为前缀,如activity_、dialog_,以及list_item_等。

整理笔记时参考了如下资料:

  • 《Android编程权威指南》第11章应用本地化, Bill Phillips Brian Hardy著,王明发 译。人民邮电第1版。
    英文版书名《Android Programming - The Big Nerd Ranch Guide》
  • 官方文档 Localizing with Resources

知识共享许可协议
li2的博客WeiYi.Li 创作,采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
© 2011-2017. All rights reserved by WeiYi.Li. Powerd by Jekyll & LinAnYa's Theme