【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。
资源框架和分辨率无关性
屏幕尺寸和像素密度的资源限定符
屏幕尺寸
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。
相关文章推荐
- 【android】适配多屏幕的最佳实践
- Android 屏幕适配最佳实践
- 【官网翻译】Android屏幕适配从原理到最佳实践(很全的教程)
- 关于SQLite,Android上SQLite的最佳实践
- 关于android屏幕适配问题
- 关于android分辨率兼容(屏幕适配)问题
- 关于android屏幕适配的解决方案
- 关于Android屏幕适配应该知道的一些知识
- 关于Android最佳性能实践——合理管理内存学习笔记
- 关于Android的多种屏幕适配
- android之关于屏幕适配问题
- 关于android屏幕适配的一点小经验
- 关于Android最佳性能实践——高性能编码优化学习笔记
- android之屏幕适配之二实践切图适配不同的平板
- 关于Android的多种屏幕适配
- Android,关于设备独立像素(dip/dp),关于机型屏幕适配
- 关于 android屏幕适配
- 关于Android中的屏幕适配问题
- 关于Android最佳性能实践——布局优化技巧学习笔记
- 关于Android 奇葩分辨率相同屏幕密度下适配问题若干