Android Training - 支持不同的尺寸
Android设备屏幕根据两个属性分类:尺寸和密度。你应该期望你的程序被安装在合理的尺寸和密度范围内。例如,你应该针对不同的尺寸和密度提供可选择的资源,让你的程序能有好的展现。这里有四个常用的尺寸:small, normal, large, xlarge四个常用的密度:low(ldpi), medium(mdpi), high(hdpi), extra high(xhdpi)为了能够在不同的屏幕中显示不同的样式和位图,你必须保存不同的资源在独立的目录中,和前面说的不同语言字符串类似。
还要注意的是,不同的屏幕方位(风景或者肖像)被指定为不同的屏幕尺寸。所以很多程序需要修订样式以便在不同方位都能有好的用户体验。
创建不同的样式为了在不同的屏幕尺寸下有好的用户体验,你必须为每个你想支持的屏幕尺寸创建一个唯一的XML样式文件。每个样式保存在对应的以-<screen_size>为后缀的资源目录中。例如,一个large屏幕的样式目录为res/layout-large/。
提示:Android会自动缩放你的样式,以便合适的填充屏幕。因此,你不用担心不同尺寸屏幕下UI元素的决定尺寸,而是要更多关注样式结构对用户体验的影响(比如相对于相邻view的尺寸和位置)。
例如,下面这个工程包含默认的样式和一个可选择的large屏幕样式:
MyProject/ res/ layout/ main.xml layout-large/ main.xml文件名必须是相同的,但是内容是不同的,它为不同的屏幕尺寸提供对应的UI。
MyProject/ res/ layout/ main.xml layout-land/ main.xml默认的layout/main.xml文件被使用在肖像(竖屏)方位。
MyProject/ res/ layout/ # default (portrait) main.xml layout-land/ # landscape main.xml layout-large/ # large (portrait) main.xml layout-large-land/ # large landscape main.xml提示:Android3.2以及更高版本支持一种更加先进的定义屏幕尺寸的方法,允许你基于最小宽高去指定资源文件,这个课程不包括这种新技术,想了解请移步到:Designing for Multiple Screens.
MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png drawable-ldpi/ awesomeimage.png任何时候你调用@drawable/awesomeimage,系统会根据屏幕密度选择合适的位图。