基本概念
px(像素):屏幕上的点,绝对长度,与硬件相关。in(英寸):长度单位。mm(毫米):长度单位。pt(磅):1/72英寸,point。dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。 dp相同,不管在哪种屏幕上,视觉长度是一样的。dip:Density-independent pixel,同dp相同。sp:在dp的基础上,还与比例无关,个人理解为是一个矢量图形单位。在xml中定义大小,建议TextView使用sp,其他使用dp
适配方向
适配分为两个方向 :屏幕大小、屏幕密度
屏幕大小
屏幕大小的DP图
严格意义上讲:分辨率不是衡量屏幕大小的标尺,个人认为
分辨率除以DPI 为屏幕大小的标尺
屏幕大小的适配即是 宽高DP的适配
解决方案:
-多套布局-使用合适的布局嵌套实现(使用Framelayout、RelativeLayout、wrap_content、match_parent)-使用dimens.xml(values)-减少dp值的出现
---
屏幕密度
相同屏幕大小(相同DP图)下的屏幕密度:dp、不要用硬值、合适的布局、不同的资源
解决方案:
-布局中需要固定大小的时候只能使用dp值,能不用还是不用-src代码中的设置的值(例如:setWidth())参数为px值,适配时需要dp值转成px值
图标适配
http://developer.android.com/design/style/iconography.html
Google提供的最佳实践
Google提供的最佳实践
- 使用wrap_content、fill_parent或dp单元尺寸
- 不要在应用程序代码使用硬编码的像素值
- 不要使用AbsoluteLayout
- 为不同的屏幕密度提供替代不同的资源