需要适配一下各类屏幕,从谷歌的文档开始吧
http://developer.android.com/intl/zh-cn/training/basics/supporting-devices/screens.html
android使用两个常规属性分类设备屏幕:尺寸和密度。你应该期望你的应用能够适配所有规模和密度大小的设备。那么,你应该包括一些可选择的资源来优化你的外观,使其适用不同的屏幕尺寸和密度。
- 有四种常用尺寸:小(small),中(normal),大(large),巨大(xlarge)
- 有四种通用的密度:低(ldpi),中(mdpi),高(lhpi),特高(xhdpi)
你想用在不同的屏幕上的布局文件和位图,你必须将这些可选择的资源放在不同的目录中,类似于做不同的语言字符串
另外要注意,屏幕方向(横向或纵向)被认为是屏幕尺寸的变化,因此许多应用程序应该修改布局,以优化每个方向的用户体验
创建不同的布局文件
为了优化在不同屏幕尺寸的用户体验,你应该为要支持的每个屏幕尺寸创建独特的布局XML文件。每个布局应保存到相应的资源目录,命名为 - < screen_size >后缀。例如,对于大屏幕的布局应保存在res/layout-large/。
注: Android会自动缩放你的布局,以更好适应屏幕。因此,你不必担心为不同的屏幕尺寸所做的布局UI元素的绝对尺寸,而是着眼于布局结构是否影响了用户的体验(如重要视图的大小和相对于其他视图位置) 。
例如,该项目包括一个默认布局以及用于大屏幕的替代布局:
MyProject/
res/
layout/main.xml
layout-large/main.xml
文件名必须是完全一样的,但它们的内容 不同,为了提供用于相应的屏幕尺寸优化的用户界面。
像往常一样在您的应用程序引用布局文件:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch
再举一个例子,这是有横向的替代布局的项目:
MyProject/
res/
layout/main.xml
layout-land/main.xml
缺省情况下,layout/ main.xml中文件用于纵向。
如果你想提供特殊的横屏布局,包括在大屏幕上,那么你需要同时使用大和横屏选定符
MyProject/
res/
layout/main.xml # default (portrait)
layout-land/main.xml # landscape
layout-large/main.xml # large (portrait)
layout-large-land/main.xml # large landscape
注: Android的3.2及以上支持更先进的定义屏幕尺寸的方法,它允许您根据密度无关像素方面的最小宽度和高度,以指定的屏幕大小的资源。本节不包括这种新技术。欲了解更多信息,请阅读设计的多个屏幕。
http://developer.android.com/intl/zh-cn/training/multiscreen/index.html
创建不同的位图
你应该总是提供适当缩放到每个广义密度的位图资源:低,中,高,超高密度。这将帮你在不同的屏幕上实现良好的图像质量和性能
为了产生这些图像,你应该从你矢量格式的原始资源入手,创建使用以下规模的密度图像:
- xhdpi: 2.0
- hdpi: 1.5
- mdpi: 1.0 (baseline)
- ldpi: 0.75
然后放入适当的资源文件中
<span style="font-size:18px;">MyProject/
res/
drawable-xhdpi/awesomeimage.png
drawable-hdpi/awesomeimage.png
drawable-mdpi/awesomeimage.png
drawable-ldpi/awesomeimage.png</span>
您引用@drawable/ awesomeimage任何时候,系统会选择基于屏幕的密度的适当的位图。
注意:低密度( ldpi)资源并非总是必要的。当你提供了hdpi的资源时,系统会通过缩放一半的方式来适配ldpi。