Android 之 国际化与资源自适应
程序员文章站
2022-05-16 16:23:45
...
<!--
国际化和资源自适应
1、国际化:
根据不同国家不同的语言,开发出的软件能适应各种场合的使用,这种应用程序的界面语言和
风格随着android系统当前的语言环境变化而变化的技术成为国际化;
1.2、android 中的SDK 如何处理国际化:
对于字符串国际化,实际就是为应用程序提供不同语言的
字符串。当程序在运行时会检测当前的语言环境,再根据语言环境决定读取那种语言的字符串资源。
检查语言环境的任务由android系统负责完成,开发人员要做的是为保存各种语言的字符串资源
建立国际化目录,然后将相应的资源文件放到这些目录中。
1.3、国际化目录的规则如下:
资源目录+国际化配置选项
提示:
源目录指的是res目录中的子目录,如:values / layout / 等,国际化配置选项包含
很多部分,中间用 - 分隔;
注意:这些配置选项包含:语言代号和地区代号
例如:
表示中文和中国的配置选项为: zh-rCN
表示英文和美国的配置选项为:en-rUS
说明:
zh 和 en 表示中文和英文 ,
CN US 表示中国和美国,r 是必须的;
可以单独指定语言,但是不能单独指定地区;
文件夹案例:
values-zh-rCN values-en-rUS
drawable-zh-rCN drawable-en-rUS
1.4、提示:SDK 还支持很多其他配置选项,如果完全将这些配置选项加到资源目录后面,会有如下目录名:
drawable-en-rUS-large-long-port-mdpi-finger-keysexposed-qwerty-navexposed-dpad-480*320
1.5、//----------------- 在代码中 实现资源国际化 ------------
Resources resources = getResources(); // 获得res资源对象
Configuration config = resources.getConfiguration(); // 获得设置对象
//metrics 度量
DisplayMetrics dm = resources.getDisplayMetrics(); //获得屏幕参数,主要是分辨率,像素等;
config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文
resources.updateConfiguration(config, dm);
1.6、小贴士:
可以再如下地址获取完整的语言和地区的配置选项
获取语言配置选项的地址:
http://www.loc.gov/standards/iso639-2/php/code_list.php
获取地区配置选项的地址:
http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
1.7、Locale 与 国际化:
功能:除了使用资源目录处理国际化问题外,还可以使用Local对象获得当前的语言环境;
通过Local对象获得当前的语言环境,然后根据环境决定读取哪一个资源文件;
这种方式的资源文件是放在assets中的:
获取国家:Locale.getDefault().getCoutry();
获取语言:Locale.getDefault().getLanguage();
//----------------------------------------资源自适应----------------------------------------------
2、资源自适应:
根据android手机的当前运行环境自动选择相应的资源,由于手机的分辨率
屏幕方向等环境不同,造成在环境A中的资源可能在环境B中无法正常工作,或出现界面混
乱的情况。虽然可以采用技术处理,但是随着手机的环境不断增多,演变的情况是越来越
复杂了;
2.1:常用资源配置
2.2:屏幕相关概念:
* 分辨率:是指屏幕上横竖各有多少个像素;
* 屏幕尺寸:手机实际的物理尺寸:例如:2.8英寸 3.5 英寸 4.0 英寸
* android将屏幕大小分为四个级别:
small, normal , large, extralarge
* 屏幕密度:每英寸像素数;
提示:手机可以有相同的分辨率,但屏幕的尺寸可以不相同;
* DP == Diagonal pixel 表示对角像素值 = DPI = 933/3.7 = 252
提示:android 将实际的屏幕密度分为四个通用的尺寸:
low /medium /high /extra high
例如:一般情况下的普通屏幕:
ldpi==120dpi
mdpi==160dpi
hdpi==240dpi
xhdpi==320dpi
贴士:对于屏幕来说dpi值越大,屏幕的精细度越高,屏幕看起来也就越清楚
2.3:android多屏幕支持机制:
即为当前设备屏幕提供一种合适的方式共同管理并解析
应用资源。
2.4:android平台有自动匹配机制去选择对应的布局和图片资源:
2.5: 界面布局方面:
2.5.1:根据 {物理尺寸} 的大小准备5套布局:
layout : 存放一些通用的布局xml文件
layout-small : 屏幕尺寸小雨3英寸左右的布局;
layout-normal : 屏幕尺寸小于4.5英寸左右的布局
layout-large : 4英寸-7英寸之间
layout-xlarge : 7 英寸--10英寸之间
2.6: 图片资源方面:
2.6.1:需要根据dpi的值准备5套图片资源:
drawable : 主要放置xml配置文件或者对分辨率要求较低的图片
drawable-ldpi : 低分辨率的图片,如:QVGA (240*320)
drawable-mdpi : 中等分辨率的图片,如:HVGA (320*480)
drawable-hdpi : 高分辨率的图片,如:WVGA(480*800) FWVGA(480*854)
drawable-xhdpi : 至少 960dp*720dp
3、android 中的自适应机制:
<!-- 便于屏幕移植,增加的自动适配功能 -->
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true" />
<!--
说明:
android:anyDensity="true"
//是否支持多种不同密度的屏幕,如果false ,则系统自动缩放图片尺寸和这个图片的坐标;
android:largeScreens="true" 是否支持大屏幕,
.......
-->
上一篇: Android 之shape 的用法介绍
推荐阅读
-
android之ContentResolver与ContentProvider介绍
-
Android开发之Button事件实现与监听方法总结
-
Android持久化技术之文件的读取与写入实例详解
-
Android开发之资源目录assets与res/raw的区别分析
-
Android开发之缓冲dialog对话框创建、使用与封装操作
-
Android4.4开发之电池低电量告警提示原理与实现方法分析
-
Android开发之Button事件实现与监听方法总结
-
Android UI设计与开发之仿人人网V5.9.2最新版引导界面
-
Android开发之全屏与非全屏的切换设置方法小结
-
Android UI设计与开发之使用ViewPager实现欢迎引导页面