国际化和资源自适应
环境 英语 美国英文 中文
文件夹命名 values-en values-en-rUS values-zh
若某一个语言环境没有在项目中定义语言环境,那么也会使用 values 下的资源。
国际化和资源自适应
为Android提供国际化资源
• 图片国际化 • 在 res 下新建 drawable-zh 文件夹,存放中文环境下的图
首先要做获取当前屏幕的宽高度,因为这个在后面要 用到,写两个静态变量用来保存当前屏幕的宽高度: public class Constant {
public static int displayWidth; //屏幕宽度 public static int displayHeight; //屏幕高度
}
国际化和资源自适应
主要内容
1.国际化 2.自适应屏幕方向和大小 3.屏幕自适应解决方法
国际化和资源自适应
国际化和资源自适应
为Android提供国际化资源
1.为Android提供国际化资源,主要原因是Android 独特的资源管理 方式。代码可以不直接和资源发生关系。Android 中,通常通过 R 文件 提供的索引来间接的引用某一个资源。而维护资源索引和真正的资源之 间的关系,却是 Android 系统来做的。 • Android 中要实现国际化比较简单。 • 字符串国际化:在res文件夹下新建对应语言的values 文件夹,
片,新建 drawable-en 作为英语环境下的图片;
• 在 res 目录下自动创建三个默认语言环境的文件夹:
– drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
– drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480) – drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854);
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480); (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应 的图片。 在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根 据需求均存放不同版本图片。 当然遇到一些特殊的屏幕,这时候可以自己定义drawable的大 小了: 比如:drawable-nodpi-1024×600
4. ui设计中将一些通用属性解耦到style theme中来, 利于修改。
5. 对于drawable资源按dpi不同配几套对应drawables ,一般可以选最大和最小的。
自适应屏幕方向
国际化和资源自适应
横屏竖屏自动切换:
在res目录下建立layout-port和layout-land两个目录, 里面分别放置竖屏和横屏两种布局文件手机屏幕方向变化 的时候系统会自动调用相应的布局文件,避免一种布局文 件无法满足两种屏幕显示的问题。
屏幕自适应
国际化和资源自适应
二、自定义尺寸法
如图自己定义了两套尺寸文件。由于每一套界面都要 写一套,所以有些同学可能觉着不太好,不过这个写起 来比较简单,而且以后也不用改,所以有时候也可以考 虑用一下!
国际化和资源自适应
屏幕自适应
三、在java代码中设置宽高度
官方推荐使用xml的方式写布局。不过在这不会像 Swing那样写那么多麻烦的布局代码,因为只是在代码中重 新设定控件的宽高度而已,其他属性依然是交给xml布局文 件的。虽然我不赞成这样的方法,但确确实实也是解决屏幕 自适应问题的方案之一,而且很简单。
drawable-nodpi-1280×800 drawable-nodpi-800×480
自适应屏幕大小
国际化和资源自适应
1. 使用硬件无关度量单位 dp(dip);
2. 多使用RelativeLayout来进行ui设计;
3. 合理利用ScollView或者HorizonalScollView来包裹 固定大小组件;
屏幕自适应
国际化和资源自适应
四、多布局
做为最后的方法,也是最后一个才会考虑的方法, 那就是为不同的尺寸界面单独写布局。不到万不得已不 要用这个方法,需要说明的是,横竖屏切换使用不同布 局也是用这个方法解决的。
屏幕自适应
国际化和资源自适应
1、细说layout_weight(见备注)
目前最为推荐的Android多屏幕自适应解决方案。 该属性的作用是决定控件在其父布局中的显示权重, 一般用于线性布局中。其值越小,则对应的layout_width 或layout_height的优先级就越高,一般横向布局中,决定 的是layout_width的优先级;纵向布局中,决定的是 layout_height的优先级。 现在最为流行的0px设值法。看似让人难以理解的 layout_height=0px的写法,结合layout_weight,却可以 使控件成正比例显示,轻松解决了当前Android开发最为头 疼的碎片化问题之一。
• Android 系统会根据手机的分辨率,而自动从不同的对应的 某一个文件夹下去加载图片。
自适应屏幕大小
国际化和资源自适应
屏幕大小:
一:layout大小多样
Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢?
只需要在res目录下创建不同的layout文件夹,比如 layout-640x360,layout-800x480,所有的layout文件在编 译之后都会写入R.java里,而系统会根据屏幕的大小自己 选择合适的layout进行使用。
对于相同dpi、但尺寸不一样的设备,可以通过 layout文件控制各种资源的布局。Google将设备分为 small(2~3英寸)、normal(4英寸左右)、large(5~ 7英寸)、xlarge(7英寸以上)
国际化和资源自适应
自适应屏幕大小
二:hdpi、mdpi、ldpi
drawable- hdpi、drawable- mdpi、drawable-ldpi的区别: