参考:http://www.sohu.com/a/300526265_663371
学完上篇,又迷茫了,dp不是就是android提供的适配方案吗?为什么还要适配啊??
是因为忽略了两个个问题
问题1:虽然1dp = density px 。但是density的值是会变化的。比如两个手机,横向的像素都是1080px.但是,一个是2.25英寸,一个是2.5英寸,那么dpi就分别对应480和432,density就分别为3和2.7。那么比如一个图片,宽度为600px吧,第一个手机上,就应该设置为200dp,第二个手机上,就应该设置为222dp。所以,仅仅凭着dp,是无法适配所有机型的
第二个问题,跟设计稿之间的转换。设计稿的单位是px,px和dp之间转换的标准是什么呢?其实也就是density。但是这个density每个设备都不相同,所以转换很困难。
适配方案:
最小宽度限定符:
比如:设计稿是375*750
在values-sw360dp中,也就是假设最小宽度为360dp。也就是把375个像素平分成了360份,那一份就是0.96px
在values-sw400dp中, 也就是假设最小宽度为400dp。也就是把400个像素平分成了360份,那一份就是1.06px
那假设设计稿中有一个10px*10px的div,
在360dp里,就是9.6dp*9.6dp
在400dp中,就是10.6*dp*10.6dp
自动生成这些dimens的方法,下载插件DimenGenerator
在文件夹中,右键选择默认的dimens.xml,选择generate dimen,就自动生成了
网友评论