曾经看过写屏幕适配的文章,内容介绍了很多最后切没给出个易懂的解决方法,朋友问起就整理了下。
术语
- 像素点 px,不解释了。
- 分辨率,屏幕上像素px的总数。
- 屏幕尺寸 in,以英寸为单位屏幕对角测量的实际物理尺寸。
- 屏幕密度 dpi,
dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
,Android为了解决屏幕尺寸碎片化问题,系统内置屏幕密度值和实际公式计算值会有不同。 - 密度无关像素 dp(dip),
dp = px/(dpi/160)
。 - 缩放无关像素 sp,除了dp单位的效果外,会随系统设置字体大小而变化。
图片资源适配
屏幕密度最直接的影响是drawable下图片的缩放,dpi越高显示的图片显示效果越小占用内存越小。
限定符 | 密度(dpi) | 尺寸比(dpi/160) | px/dp(icon) | 代表分辨率 |
---|---|---|---|---|
ldpi | ~120dpi | 0.75 | 36/48 | 240x320 |
mdpi | ~160dpi | 1 | 48/48 | 320x480 |
hdpi | ~240dpi | 1.5 | 72/48 | 480x800 |
xhdpi | ~320dpi | 2 | 96/48 | 720x1280 |
xxhdpi | ~480dpi | 3 | 144/48 | 1080x1920 |
xxxhdpi | ~640dpi | 4 | 192/48 | icon |
tvdpi | ~213dpi | 1.33 | 64/48 | tv |
nodpi | ~ | ~ | ~ | normal |
如上表所示mdpi下1px=1dp、hdpi下1.5px=1dp、xhdpi下2px=1dp以此类推,720x1280(所谓的2x图)的设计切图放在xhdpi,1080x1920(3x图)的设计切图放在xxhdpi(明白了可以去向iOS炫耀我们不仅有2x和3x图,还有0.75x、1x、1.5x和4x就是这么任性)。在日常使用中通常使用一份720x1280的尺寸,如果设计用的是iOS的尺寸不愿意切Android尺寸只能将就的放了。
尺寸适配
一般9:16的屏幕尺寸的dp值为360x640,通常屏幕适配以这个尺寸进行换算。720x1280的设计尺寸除以2为布局的dp值(1080x1920则除以3)。针对不是常见值的屏幕尺寸(不适配特殊机型和平板的不用看了),Android根据版本不同有不同适配方式。
- 1). Android 3.2+ 很好理解N为任何整数单位dp
限定符 | 说明 |
---|---|
sw<N>dp | 宽高中最小值>=N |
w<N>dp | 宽最小值>=N |
h<N>dp | 高最小值>=N |
- 2). Android 3.2 以下尺寸组方案区分,已被弃用
限定符 | 最小尺寸(dp) | 说明 |
---|---|---|
small | 320x426 | 小尺寸屏幕 |
normal | 320x470 | 正常尺寸屏幕(基线尺寸) |
large | 480x640 | 大尺寸屏幕 |
xlarge | 720x960 | 超大尺寸屏幕 |
其它限定符,由于Android 3.2后新的适配方式横竖布局限定符可以用新方案代替,纵横比在尺寸组弃用后已没多大意义(本来也没多大用处),所以这两种限定符很少被使用了。
限定符 | 作用 |
---|---|
land | 横屏布局 |
port | 竖屏布局 |
long | 纵横比大于正常尺寸 |
nolong | 纵横比类似正常尺寸 |
限定符的使用示例(-
隔开就是啦)
layout-xlarge #超大尺寸
layout-xlarge-land #横屏超大尺寸
layout-sw600dp #大于600dp布局
values-sw600dp #大于600dp引用值
关于屏幕适配自己曾经已AndroidAutoLayout的想法写过一个基于百分比为基础上的方案Android 适配无难事 UniversalLayout,但读完Google的适配方案觉得这些方法只是方便了开发,但违背了Google对多屏幕多布局的设计思想,可以作为学习参考尽量不要用于开发(后悔中-_-||)。
参考
Google 贴心的给出了中文版的内容,看不懂英文已经不是问题了不过你要先翻墙。
Supporting Multiple Screens | Android Developers
Tablet app quality | Android Developers
Designing for Multiple Screens
详解Android开发中dp dip sp px dpi ppi 区别和转换
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。转载请保留作者及原文链接
网友评论