Android开发之国际化问题
2012-12-27 11:25
218 查看
这里所谓国际化,指的就是我们开发的应用可以在手机的特定的语言环境下显示特定的语言,比如在中文环境下,软件里面所有的文字为中文,在英文环境下,软件中所有的文字都为中文,我们是如何来实现这样的功能的呢?
其实很简单,只要在res文件夹建相应的value文件夹即可,下面以一个简单的例子来说明。
我们要实现的效果就是在中文环境下显示如下界面
图 1
英文环境下显示如下界面
图 2
界面包括一个TextView和一个ImageButton
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/exit"
/>
仔细观察可以发现,其实上面两个界面变的都只是文字和ImageButton上的图片而已,其他的完全没有变化,我们有必要将其中的文字抽取出来,放到res/values文件夹下面,如果要实现中文环境下对应的界面,需要在res文件及下建立一个"values_zh"文件夹,如果要实现在英文环境下实现对应的界面,需要在res文件夹下建立一个"values_en"文件夹,然后分别在两个文件及中建一个"string.xml"文件,这俩个xml文件除了文本节点(显示在界面上面的内容)不一致外,其他必须一致,比如
<?xml version="1.0"
encoding="utf-8"?>
<resources>
<string
name="hello">您好,俞超!</string>
<string
name="app_name">超人</string>
</resources>
与
<?xml version="1.0"
encoding="utf-8"?>
<resources>
<string name="hello">Hello
yuchao!</string>
<string
name="app_name">super_man</string>
</resources>
这样,一个简单的国际化应用就做成了
然后,上面的图片在相应的语言环境下又是如何实现的呢?
原理和文字一致,只要分别建立对应的drawable文件夹,比如中文环境"drawable_zh",英文环境"drawable_en",准备两张图片,名字相同,分别放入两个文件夹,这样,应用运行的时候就会根据手机的语言环境来引用相应文件夹下的图片了
最后,我们还可以实现应用可以适应屏幕分辨率的效果,当然,这需要建立相似的布局文件夹,命名规则为
“layout-f1xf2”其中f1的值必须大于f2,比如“layout-320x240”,“layout-480x320”,然后文件夹下所有的xml文件必须同名,这样就能实现应用的界面布局可以随着分辨率的变化而变化了。
补充一点,如果在某一语言环境下没有对应的方言文件夹,那么Android将使用默认的不带后缀的文件夹(layout,drawable,values)等,值得注意的是,必须要指明默认的文件夹,否则在陌生的语言环境下,Android将无法选择合适的处理方式!
其实很简单,只要在res文件夹建相应的value文件夹即可,下面以一个简单的例子来说明。
我们要实现的效果就是在中文环境下显示如下界面
图 1
英文环境下显示如下界面
图 2
界面包括一个TextView和一个ImageButton
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/exit"
/>
仔细观察可以发现,其实上面两个界面变的都只是文字和ImageButton上的图片而已,其他的完全没有变化,我们有必要将其中的文字抽取出来,放到res/values文件夹下面,如果要实现中文环境下对应的界面,需要在res文件及下建立一个"values_zh"文件夹,如果要实现在英文环境下实现对应的界面,需要在res文件夹下建立一个"values_en"文件夹,然后分别在两个文件及中建一个"string.xml"文件,这俩个xml文件除了文本节点(显示在界面上面的内容)不一致外,其他必须一致,比如
<?xml version="1.0"
encoding="utf-8"?>
<resources>
<string
name="hello">您好,俞超!</string>
<string
name="app_name">超人</string>
</resources>
与
<?xml version="1.0"
encoding="utf-8"?>
<resources>
<string name="hello">Hello
yuchao!</string>
<string
name="app_name">super_man</string>
</resources>
这样,一个简单的国际化应用就做成了
然后,上面的图片在相应的语言环境下又是如何实现的呢?
原理和文字一致,只要分别建立对应的drawable文件夹,比如中文环境"drawable_zh",英文环境"drawable_en",准备两张图片,名字相同,分别放入两个文件夹,这样,应用运行的时候就会根据手机的语言环境来引用相应文件夹下的图片了
最后,我们还可以实现应用可以适应屏幕分辨率的效果,当然,这需要建立相似的布局文件夹,命名规则为
“layout-f1xf2”其中f1的值必须大于f2,比如“layout-320x240”,“layout-480x320”,然后文件夹下所有的xml文件必须同名,这样就能实现应用的界面布局可以随着分辨率的变化而变化了。
补充一点,如果在某一语言环境下没有对应的方言文件夹,那么Android将使用默认的不带后缀的文件夹(layout,drawable,values)等,值得注意的是,必须要指明默认的文件夹,否则在陌生的语言环境下,Android将无法选择合适的处理方式!
相关文章推荐
- Android的国际化及开发中遇到的问题解决[全]
- Android混合(Hybrid)开发遇到问题备份
- Android开发时Activity之间传送对象Bundle为null的问题
- 关于android开发遇到的一些问题的解决办法---间断的更新
- [Android] Android 开发杂项问题记录
- 【COCOS2DX-LUA 脚本开发之十三】解决lua项目编译Android出现get data from file failed、Cocos2dxActivity cannot be 路径等问题
- Android开发:关于导入ApiDemos后没有R.java文件的问题
- Android开发中遇到的问题
- react native开发过程中,运行android程序屏幕没有任何显示问题
- android开发中遇到的各种问题收集--不定期更新
- Android开发第三方库glide和圆形控件circleimageview一起使用第一次进入无法显示问题
- Android开发常见问题及解决方法
- 开发问题及解决 E/AndroidRuntime(15377): Caused by: java.lang.InstantiationException: can't instantiate clas
- 5个Android开发中比较常见的内存泄漏问题及解决办法
- Android 开发环境搭建及常见问题解决
- android 6.0权限开发---拍照,打开相册问题
- Android开发-windows中的工程导入到linux下Eclipse中乱码问题
- Android开发问题记录(二)——Eclipse不显示Android SDK&AVD Manager
- android开发过程中遇到的一些问题汇总
- Android开发 R cannot be resolved to a variable问题的分析