Android 屏幕适配之各种概念(一)

Android 屏幕适配

为什么要屏幕适配

在讨论这个问题之前 我们先看下面的这张图:
android 设备占有率
这张图是在网上找到的,这张图显示的是国内的Android 各种设备的占有率,方块代表 Android 设备的品牌,方块中的碎片代表品牌下属机型,方块面积大小代表占有率大小。看完这张图,然后再看下面这张图:
android 分辨率碎片化

这是 Android 设备的分辨率的用户活跃统计图,看着密密麻麻的分辨率,不用也知道,Android的屏幕碎片的程度太高了,我们开发出来的App,不可能只适应其中的一种或几种,至少应该适应大多数主流的手机,这样才算的上合格的App,为了这个目标,Android 屏幕适配是必须要做的。

需要知道的几个概念

上面我们列举了几张图,简单解释了一下,屏幕适配的必要性,其中提到了屏幕的分辨率,那什么是分辨率呢?

分辨率 :是指在屏幕上横纵向上的像素点数。像素的单位是px,比如上面的 1920x1080,指的就是纵向像素x横向像素。

除了分辨率之外,还有几个我们应该知道的概念:

屏幕尺寸 :指的就是屏幕对角线的长度。类似于我们说的电脑屏幕的尺寸。当然这里说的是英寸;1英寸 =2.54厘米。像我们平时说的5.2寸,5.5寸的手机,就是指的屏幕的英寸长度。

像素密度 :指的是屏幕的像素密度,即我们的屏幕上每英寸的像素点数。用英文就是“dot per inch”, 我们平时使用的是它们的缩写“dpi”。根据其定义我们就可以知道,像素密度跟屏幕的大小和屏幕的分辨率都有关系。跟"dpi"相近的还有一个“PPI”,"PPI"为 "pixel per inch"的缩写,意为每英寸的像素点数,跟上面的dpi 的意思很相近,其实还有些区别的,区别在于“dot”和“pixel”之间,当然在这里我们可以理解为一个意思,如果要细究它们的区别的请参看 PPI和DPI 的区别 。我们可以根据其手机的尺寸和分辨率算出它们的像素密度,比如华为荣耀7,下图是我在京东上截的它给出的参数图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bivN5S1b-1588068568400)(http://7xrxe7.com1.z0.glb.clouddn.com/%E5%8D%8E%E4%B8%BAP7%E5%88%86%E8%BE%A8%E7%8E%87.png)]

它的屏幕尺寸为5.2寸,分辨率为 1920x1080,我们算出
p p i = d p i = 192 0 2 + 108 0 2 / 5.2 ≈ 423 ppi = dpi = \sqrt{1920^2+1080^2} {/5.2} \approx423 ppi=dpi=19202+10802 /5.2423
按上面算出的值为423,,在Android Studio 的模拟器上同样规格的模拟器,给出的dpi是420,这应该是在允许的范围内。

尺寸单位 : 在上面我们提到了px,就是一种尺寸单位,其它的还有 dip ,dp ,sp

dip/dp:dip跟dp 其实是一个意思,都是 Density Independent Pixels 的缩写,即密度独立于像素,也就是说密度跟像素无关。根据上面我们提到过dpi,如果一英寸里含有160像素,这个屏幕的像素密度就是 160dpi。在 Android 就是以160dpi为基准, 在160dpi的手机上1dp = 1px ,如果是320dpi的手机上 1dp = 2px。以此类推。如果我们在 160dpi 的手机上划一条 160px的横线显示起来会跟屏幕的宽一样,如果我们在在320dpi的手机上划一条160px 的线,则会显示为屏幕宽的一半。当我们使用dp作为单位时,效果就不一样了,如果我们画一条160dp 的横线,这两种手机的显示都是为屏幕的一半。

sp : 跟dp类似,它是“scale-independent pixels” 的缩写,我们一般使用在文字大小的设置上,因为它会根据文字的大小在不同的屏幕上进行缩放。

做过开发的我们应该都知道,在放置图片(drawable)和一些资源(values)的文件夹都会有不同的后缀,用来区分不同的像素密度下的图片和dimen值,如下表:

名称像素密度范围
mdpi120dpi-160dpi
hdpi160dpi-240dpi
xhdpi240dpi-320dpi
xxhdpi320dpi-480dpi
xxxhdpi480dpi-640dpi

可以看出它们的比例由上往下是:2:3:4:6:8

如果使用AndroidStudio 的同学应该知道,现在app的应用图标都独立出来,放到mipmap文件夹下,
每个文件夹下对应的都是各个像素密度范围的手机应该显示的图标。比如在mdpi下的尺寸是 48x48,hdpi下的是72x72,xhdpi下的是96x96,xxhdpi 下的是 144x144,xxxhdpi下的是 192x192。在这里我们也可以看到它们是按照2:3:4:6:8的比例进行缩放的。知道这些,如果过有的UI不知道给你切多大的图时,就可以拿这个告诉它,如果忘记了就去,mipmap 文件夹下去看看图片的尺寸久OK了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值