您的位置:首页 > 移动开发 > Android开发

【android官方文档】android 屏幕适配 支持不同的屏幕

2014-02-21 11:14 543 查看
如转载请注明出处http://blog.csdn.net/ethanchiu/article/details/19611537


支持不同的屏幕

android将设备屏幕归纳为两种:尺寸和密度。你要知道你安装的app是在你设备屏幕的范围内的。这样,app需要包含些资源文件来优化app在不同密度尺寸的屏幕下的外观。

一般有四种尺寸: small, normal, large, xlarge

和四种密度low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)

为了给不同的屏幕适配,应该使用不同的布局和图片,你必须将这些可选的资源放到不同的文件夹下,类似于你设置不同语言。

需要意识到屏幕的方向(水平或者垂直)是不同的屏幕尺寸,所以许多apps需要修订布局来优化不同方向的用户体验。

创建不同的布局

为了优化在不同屏幕尺寸下的用户体验,你需要创建不同的布局xml文件。每一个布局文件需要保存在合适的资源文件夹下,按照 -<screen_size> 作为后缀。比如,一个大屏幕的布局需要放在res/layout-large/文件夹下。

注意:为了适应不同屏幕,android自动放缩布局。因此,不需要担心不同屏幕上的布局的UI元素的绝对值,应该把重点放在影响用户体验的布局结构上(比如重要view相对于兄弟view的大小和位置)。

比如,这个项目包含了默认的布局和一个可选的大屏幕布局:

MyProject/
res/
layout/
main.xml
layout-large/
main.xml

文件名字是一样的,但是里面的内容是不一样的。

在你app中的简单引用

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
系统从合适的文件夹中读取了布局文件。更多信息看Providing
Resources 。

另一个例子,有一个项目包含水平方向的布局文件:

MyProject/
res/
layout/
main.xml
layout-land/
main.xml

默认的,layout/main.xml文件用在垂直方向的布局。

如果需要给水平方向提供特殊的布局,并且在大屏幕上,就需要使用large 和 land 标示符:

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

注意:Android 3.2 即以上的版本提供一个定义屏幕尺寸的先进方法,这个方法可以给最小宽度和高度指定资源文件。本问不包括这个技术,更多信息请看Designing
for Multiple Screens。

创建不同的Bitmap图片

你需要提供广义上不同密度的图片: low, medium, high and extra-high 。这会帮你获得好的图形质量和性能。

为了生成这些图片,你需要用矢量格式的原生资源,并为每种密度生成图片:

xhdpi: 2.0

hdpi: 1.5

mdpi: 1.0 (baseline)

ldpi: 0.75

这就意味着要给xhdip设备生成200x200的图片,同样的hdpi是150x150,mdpi是100x100,ldpi是75x75。

MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png

任何时候引用@drawable/awesomeimage ,系统会根据屏幕密度选择合适的图片。

注意:ldpi资源不总是必要的。当你提供了hdpi资源,系统会压缩一半,来适应ldpi的屏幕。

更多创建图标的注意点和知道,参看Iconography design guide.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: