论述
对开发而已,屏幕的大小就是以dp来看的。
因为现在UI设计上一般认为垂直方向是可以无限延长的(上下滚动),高是一定满足展示的,更多的我们要注意不同宽度的屏幕适配。
以手机为例,一般宽度介于320到411dp之间,布局必须能适应320到411dp之间的任何宽度,这就是开发要面对的适配问题。
给不同xxxxdpi的文件夹放对应的资源文件。
今日头条等3方库,效果看起来都不错,我理解是现在测试的例子是取了中间值360dp或375dp进行缩放,缩放比例不大的缘故。
一个用户头像大小是40dp*40dp,设计一般会给一个默认图,这个默认图的不同尺寸我们可以放在drawable-mdpi(40px*40px),drawable-xhdpi(60px*60px),drawable-xxhdpi(80px*80px)几个文件夹,这些尺寸和控件在不同dpi设备上展示实际像素大小是相同的。
现在设计一般出图的时候是以720px或750px或1080px作为原型大小宽的大小,这里已经默认用了Android的DP概念了(720px是750px是作为xhdpi,1080px是xxhdpi)
Android手机屏幕的大小基本介于320dp到411dp之间(平板不在此列);设计图也就那几种规格,换算过来720p和1080p的是360dp,750*1334是375dp。按照设计的内在逻辑去适配,使用DP也并不复杂,效果也是最佳的。虽然这里只说手机,但如果按照这样适配,就算是在平板上,显示效果也是可以的,而不是一个拉伸的界面。
实验
相同大小,不同分辨率的手机AB:
代号 | 分辨率 | 尺寸 | dpi | dp |
---|---|---|---|---|
手机A | 320x480 | 3.6寸 | 160 | 1dp=1px |
手机B | 640x960 | 3.6寸 | 320 | 1dp=2px |
假如AB都设置一个宽度为100dp的TextView:
代号 | TextView宽度 | 手机宽度 | 比例关系 |
---|---|---|---|
手机A | 100px | 320px | 10/32 |
手机B | 200px | 640px | 10/32 |
得出结论:
对于相同尺寸的手机,即使分辨率不同,同DP的组件占用屏幕比例也相同。
dp的意义
- 同大小的手机,使用dp做出的UI效果一定相同。
- 不同大小的手机,使用dp做出的UI效果一定不同(这里不考虑weight等参数)。但只是组件相对于屏幕的大小比例有所缩放,组件自身的宽高比是不变的,即组件自身不会变形。