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

【Android 适配】关于android屏幕适配的最佳实践

2013-12-20 11:07 681 查看
今天研读了一下《Android2高级编程》中的“分辨率和像素密度无关性”一章,启发很多,特来分享。

资源框架和分辨率无关性

屏幕尺寸和像素密度的资源限定符

屏幕尺寸

small 小于标准的3.2''的屏幕
medium 典型的智能手机屏幕尺寸
large 一般为平板电脑的尺寸
xlarge 一般为TV的尺寸,超大屏幕

像素密度 显示屏的像素密度,通常指每英寸点数(dpi) 判断方式:getApplicationContext().getResources().getDisplayMetrics().density;

ldpi 用于像素密度在100~140之间的低密度资源
mdpi 用于像素密度在140~180之间的中密度资源
hdpi 用于像素密度在190~250之间的高密度资源
xhdpi 用于像素密度大于320的超高密度资源
nodpi 不管屏幕密度多少都不能伸缩的资源

方向

land 横屏
port 竖屏

纵横比

long
notlong 用于具有典型只能手机的纵横比的资源

请看图

相同的像素下,不同像素密度(DPI)的图片大小



限定符可独立使用,也可以一起使用例如【res/layout-small-long】

指定支持的屏幕密度



false值将迫使Android使用兼容性缩放比例来尝正确的缩放应用程序UI。
anyDensity 当应用程序像是在不同屏幕密度的设备上时候,如何缩放应用程序,考虑编号的像素密度则将属性设为ture

分辨率无关性的最佳实践

相对布局和密度无关的像素(大小使用dp、文字使用sp,尽量使用wrap_content和fill_parent)

值得一提:一个密度无关的像素(dp)等同于160dpi屏幕上的一个像素,两个密度无关的像素(dp)的在240dpi的屏幕上将显示为3个像素宽

使用可缩放图形资源(NinePatch)
为不同的屏幕提供优化后的资源

反复测试
Google提供的最佳实践

使用wrap_content、fill_parent或dp单元尺寸
不要在应用程序代码使用硬编码的像素值
不要使用AbsoluteLayout
为不同的屏幕密度提供替代不同的资源





转载的一些有用信息

http://my.eoe.cn/appadventure/archive/5580.html

使用新的尺寸限定符

7寸平板:不要再使用layout-large,使用layout-sw600dp。

说明:Nexus 7 = 960 X 600 dp;最小的尺寸是600。

10寸平板:不要再使用layout-xlarge,使用layout-sw720dp。

说明:Nexus 10 = 1280 X 800 dp;最小的尺寸是800。不过有些10寸的平板像素可能要更小一点,所以这里取720只是我们常用的中间值。

sw:smallest width,即最小宽度

表示如果屏幕最小尺寸(宽和高中的较小者)大于等于XX的话,系统就指定匹配的这个layout_swXXdp。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: