dp(dip):密度无关像素 px:像素 sp:可根据选项文字大小设置进行缩放的尺寸单位java
咱们看一个例子 左边的屏幕:是1920x1080的屏幕 右边的屏幕是960x540的屏幕 图中的button的大小是270px(像素) 在左边的屏幕占4分之一,在右边的屏幕占二分之一 咱们的目的是在各个屏幕上均显示为本身的四分之一 因此咱们引入了dp这个概念; 首先咱们来说一下密度比 ppi(平均像素)=对角线上的像素数/尺寸 注:对角线上的像素数用勾股定理能够得出 dp是以160ppi(平均像素)为基准 1dp=1px 1 dp =1 *平均像素/160 px 平均像素/160也成为密度比布局
假设咱们有两款手机 1080p的密度比 2 540的密度比 为1 那么135dp 为 135x2 =270px 占左边的四分之一; 那么135dp 为135x1 =135px 占右边屏幕的四分之一 完成了适配;spa
dp有没有缺点?固然有, 下面是对照表 mdpi 120dpi~160dpi hdpi 160dpi~240dpi xhdpi 240dpi~320dpi xxhdpi 320dpi~480dpi xxxhdpi 480dpi~640dpiip
密度比为2的 分辨率为 768*1280 逻辑宽度为384dp的Nexus4 密度比为2的 分辨率为760 *1280 的逻辑宽度为380dp 的其余手机 相差4dp 若是一个控件是380dp 则Nexus4的会有空隙,而另外一个手机会充满开发
为了解决这个问题,咱们采用代码适配的方式,代码适配 不考虑尺寸,采用比例的方式,把横向的分辨率/360; 竖向的分辨率/480;得出每个份的长度和宽度,根据不一样的限定符,获得不一样的结果.百度
具体java代码网上不少自行百度。程序
代码适配:im
用法:把生成的代码放入到res文件夹中,并把默认的value文件夹也添加1dp=1px比例的尺寸文件; 咱们要注意一个问题,当分辨率没有找到他的限定符,那么他找到默认的value文件夹,咱们须要在value文件夹里也加入尺寸文件,1dp=1px这样是为了程序兼容,但并非很好的效果.因此咱们尽可能要把尽可能多种的分辨率加到尺寸文件里说完了固定尺寸适配,img
咱们说一下布局中的适配. 推荐用LinearLayout 比例适配 weight 和weightsum互相结合能够知足基本上的须要. 兼容