本帖最后由 就业部_安卓组 于 2016-11-25 16:02 编辑
屏幕适配的重要性
作为一名 Android 开发者,有一个逾越不过的问题,就是屏幕适配。谈屏幕适配其实是一件非常让人蛋疼的事情,究其原因就是Android 的开放性。由于Google 这种搞一个东西就开放源代码的“习惯”造成了Android 系统的开放性,以至于随随便便一个厂商就可以随心所欲定制自家系统,任意修改成他们想要的样子。
这使整个Android 的碎片化非常严重。 严重到什么程度呢?下面给出几张图,大家感受一下。
如下图所示:
上图一个颜色块代表了一个手机品牌。 再来看手机屏幕尺寸的分布以及所占的比例
上图蓝色的线代表屏幕尺寸,颜色越深占比越大。
截止写这篇文章之前,由于我没有找到最新最官方的资料,所以调查数据只找到2015年。如下:
2012年,支持Android的设备共有3997种。 2013年,支持Android的设备共有11868种。 2014年,支持Android的设备共有18796种。
而到15年时Android 设备厂商又增加了很多很多,两年来Android 的碎片化已经从13年的11868翻倍。
如今,Android 版本依然非常混乱,而且有愈演愈烈的趋势。
针对这么多的手机,我们不可能做到面面俱到,当今市场上最流行哪些呢?根据我在 screensiz.es 上看到的数据(截止到2016年10月7日),当前全球手机屏幕尺寸、操作系统、品牌以及市场占有率的调查数据如下:
这是愿意接受调查并提供数据的一些厂商的数据,作为一名国内 Android开发者,我们抛开 IOS 不看,只看Android和国内的情况,2016年8月友盟统计的国内 Android 设备分辨率数据如下:
现在应该很清楚为什么我们要对 Android 的屏幕进行适配了吧?这么多的屏幕尺寸,怎么能保证我们自己开发的程序能美观的显示到不同尺寸、不同分辨率的设备上呢?显而易见,这肯定需要我们自己去处理,而如何处理这些问题,这就涉及到屏幕适配,也就是今天要讲的。
从上图可以看出,主流的分辨率是前六种:1280×720、1920×1080、854×480、960×540、800×480、1184×720。而真实开发中,我们要做的事就是适配当前市场上绝大多数的 Android 屏幕就可以了。
知道了屏幕适配的重要性之后,接下来开始进入正题。
必须了解的概念
先抛出几个概念:
屏幕尺寸、屏幕分辨率、屏幕像素密度 dp、dip、dpi、sp、px mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi
屏幕尺寸、屏幕分辨率、屏幕像素密度
屏幕尺寸 屏幕对角线长度,单位是英寸,我们常说的多少多少寸,比如4.7存手机、5.7存手机,指的就是这个。
屏幕分辨率 是指在手机屏幕的像素点的个数,单位是px,1px=1像素点,一般是纵向像素横向像素,如1920×1080,意味着高有1920个像素点,宽有1080个像素点。
屏幕像素密度 是指每英寸上的像素点数,单位是dpi(dotper inch)。像素密度和屏幕尺寸和屏幕分辨率有关,它是由对角线的像素点数除以屏幕的大小得到的,关系如下:
单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。
dp、dip、dpi、sp、px
dp:是Android 特有的,意为密度无关像素,Google 发布的 BASELINE(基准线)为 160,以此为基准。 dip:Density Independent Pixels,同dp。 dpi:即为屏幕像素密度的单位 sp:Scale-IndependentPixels的缩写,可以根据文字大小首选项自动进行缩放。Google推荐我们使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,为避免精度损失,建议最好不要使用奇数和小数。 px:就是我们常说的像素
mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi 文档中介绍他们之间的关系,告知他们的比例为2:3:4:6:8,其实就是160、240、320、480、640的比例。 配以图说明如下:
了解了以上这些“纸上谈兵”的概念之后,接下来进入真实解决问题的环节。但请记住,只有了解了这些概念,你才能去解决这些问题,所以不要轻视这些概念性的东西,请看下一篇:
点此进入:Android 基础篇总贴
点此进入:Android 进阶篇总贴
点此进入:Android 讨论区
以上言论,如有错误或者表达不准确或者有纰漏的地方还请指正,同时欢迎大家在评论区留言给予一定的建议,我会根据大家的意见进行相应的改正,谢谢各位! |