Supporting Different Screens
原文地址 点击打开链接android设备屏幕用两个通用的属性:大小和密度。为不同大小和密度的屏幕优化你的app。
一般的大小:small, normal, large, xlarge
一般的密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
你应该把不同的layouts和bitmaps放入对应的目录中。
注意:屏幕方向也是屏幕大小变化的一种
Create Different Layouts
你可以为不同屏幕大小的设备用多套布局来适配。如:一个large的屏幕,为这个屏幕优化的布局xml
可以放到res/layout-large/下。不同大小的屏幕,目录命名为screen_size。
android根据这些会适应屏幕布局,你要关注的是你写的布局中视图的大小和位置
例子:
MyProject/
res/
layout/
main.xml
layout-large/
main.xml
文件名必须相同
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
app运行时会根据屏幕大小来加载合适的目录下的xml文件
例子:
MyProject/
res/
layout/
main.xml
layout-land/
main.xml
默认,layout/main.xml文件用来在竖屏中显示,目录没加条件的都是默认。
如果你想为横屏、大屏提供特别的layout,你可以:
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
安卓3.2及以上支持定义屏幕尺寸的先进方法,允许您指定参考资料屏幕尺寸基于最低密度独立像素的
宽度和高度。这节课不包括这项新技术。更多的信息,阅读Designing for Multiple Screens.。
Create Different Bitmaps
你应该提供适当比例的位图资源的每个广义密度桶:低、中、高、特高的密度。
生成这些图片,你应该开始你的原始资源在每个密度矢量格式和生成图像中使用以下尺度:
xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75
这意味着如果你为xhdpi生成一个200 x200型图像设备,你应该在150 x150 hdpi生成相同的资源,为
mdpi 100 x100,75 x75 ldpi设备。
然后,将文件放到适当的目录下
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
任何时候你引用 @drawable/awesomeimage,系统基于屏幕的密度选择合适的bitmap。
注意:低密度(ldpi)资源并不总是必要的。提供hdpi资产时,系统规模下降了一半正确适合ldpi屏幕。
更多关于创建图标的提示和指导方针,参考 Iconography design guide。