Android 之 资源自适应与国际化

<!--

国际化和资源自适应

1、国际化:

根据不同国家不同的语言,开发出的软件能适应各种场合的使用,这种应用程序的界面语言和

风格随着android系统当前的语言环境变化而变化的技术成为国际化;

1.2、android中的SDK如何处理国际化:

对于字符串国际化,实际就是为应用程序提供不同语言的

字符串。当程序在运行时会检测当前的语言环境,再根据语言环境决定读取那种语言的字符串资源。

检查语言环境的任务由android系统负责完成,开发人员要做的是为保存各种语言的字符串资源

建立国际化目录,然后将相应的资源文件放到这些目录中。

1.3、国际化目录的规则如下:

资源目录+国际化配置选项

提示:

源目录指的是res目录中的子目录,如:values/layout/等,国际化配置选项包含

很多部分,中间用-分隔;

注意:这些配置选项包含:语言代号和地区代号

例如:

表示中文和中国的配置选项为:zh-rCN

表示英文和美国的配置选项为:en-rUS

说明:

zh和en表示中文和英文,

CNUS表示中国和美国,r是必须的;

可以单独指定语言,但是不能单独指定地区;

文件夹案例:

values-zh-rCNvalues-en-rUS

drawable-zh-rCNdrawable-en-rUS

1.4、提示:SDK还支持很多其他配置选项,如果完全将这些配置选项加到资源目录后面,会有如下目录名:

drawable-en-rUS-large-long-port-mdpi-finger-keysexposed-qwerty-navexposed-dpad-480*320

1.5、//-----------------在代码中实现资源国际化------------

Resourcesresources=getResources();//获得res资源对象

Configurationconfig=resources.getConfiguration();//获得设置对象

//metrics度量

DisplayMetricsdm=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==Diagonalpixel表示对角像素值=DPI=933/3.7=252

提示:android将实际的屏幕密度分为四个通用的尺寸:

low/medium/high/extrahigh

例如:一般情况下的普通屏幕:

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"是否支持大屏幕,

.......

-->

相关推荐