盒子
盒子
文章目录
  1. 基本知识
  2. 常见面试题

Android屏幕适配

基本知识

  • px(pixel, 像素): 这是设计领域最小的度量单位,因此像素必定是整数,比如 1px。
  • dp/dip(device independent pixel, 设备无关的像素): 这是 Android 独有的度量单位,这个度量单位出现的原因是:如果在开发中只规定像素,则会出现在分辨率高的手机上图很小,在分辨率低的手机上图很大。
  • in(inch, 英寸): 1 in=2.54 cm。
  • dpi(dots per inch)/ppi(pixels per inch): 一英寸中包含了几个像素,这表示屏幕的精细程度。这个可以通过”对角线的像素数(px)/屏幕对角线长度(inch)”得出。
  • density: 密度,density=px/dp=dpi/160。
  • sp: 与 dp 类似,但是用于字体。
  • px=dp*density。
屏幕 dpi范围 density
ldpi ~120dpi 0.75
mdpi ~160dpi 1
hdpi ~240dpi 1.5
xhdpi ~320dpi 2
xxhdpi ~480dpi 3
xxxhdpi ~640dpi 4

当APP运行在某个手机上(假设是xhdpi),需要寻找名为back的图片,寻找规则:

  • 先去最匹配的目录找,即drawable-xhdpi。
  • 再去密度高的目录找,即drawble-xxhdpi, drawable-xxxhdpi,直到找到为止,并缩小对应的比例,比如xxxhdpi图片缩小2倍。
  • 再去drawable-nodpi找,nodpi的图片显示在任何屏幕都不做缩放。
  • 再去密度低的目录找,即drawable-hdpi, drawable-mdpi, drawable-ldpi,直到找到为止,并放大对应的比例,比如mdpi的图片放大2倍。
  • 缩放规则:scale=屏幕的density / 图片的density。目标大小=原来大小*scale。

常见面试题

问:图片为100px*100px,放在drawable-xhdpi中,当前设备是xxxhdpi和mdpi的效果?

答:如果设备是xxxhdpi,根据公式,scale=4/2=2,即图片放大2倍,即图片显示的像素为200px*200px。如果设备是mdpi,根据公式,scale=1/2=0.5,即图片缩小2倍,即图片显示像素为50px*50px。

问:180dp在xhdpi和hdpi中分别是多少像素?

答:在xhdpi中,为180*2=360px;在hdpi中,为180*1.5=270px。

问:180dp的方块,分别放在3.5寸、4寸、4.5寸的手机上(都是xhdpi),效果分别怎么样?

答:因为三个手机都是xhdpi,因此密度一样,180dp的实际像素为360px,因此在三个手机上显示大小一样。

支持一下
扫一扫,支持xiazdong