A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 就业部_安卓组 于 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 上看到的数据(截止到2016107日),当前全球手机屏幕尺寸、操作系统、品牌以及市场占有率的调查数据如下:


  这是愿意接受调查并提供数据的一些厂商的数据,作为一名国内 Android开发者,我们抛开 IOS 不看,只看Android和国内的情况,20168月友盟统计的国内 Android 设备分辨率数据如下:


  现在应该很清楚为什么我们要对 Android 的屏幕进行适配了吧?这么多的屏幕尺寸,怎么能保证我们自己开发的程序能美观的显示到不同尺寸、不同分辨率的设备上呢?显而易见,这肯定需要我们自己去处理,而如何处理这些问题,这就涉及到屏幕适配,也就是今天要讲的。

  从上可以看出,主流的分辨率是前六种:1280×7201920×1080854×480960×540800×4801184×720。而真中,我要做的事就是适配当前市大多数的 Android 屏幕就可以了。

  知道了屏幕适配的重要性之后,接下来开始入正题。

必须了解的概念

  先抛出几个概念:

  屏幕尺寸、屏幕分辨率、屏幕像素密度
  dp、dip、dpi、sp、px
  mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi

  屏幕尺寸、屏幕分辨率、屏幕像素密度

  屏幕尺寸
    屏幕线长度,位是英寸,我的多少多少寸,比如4.7存手机、5.7存手机,指的就是个。

  屏幕分辨率
    是指在手机屏幕的像素点的个数,位是px1px=1像素点,一般是向像素横向像素,如1920×1080,意味着高有1920个像素点,宽有1080个像素点。

  屏幕像素密度
    是指每英寸上的像素点数,位是dpidotper inch)。像素密度和屏幕尺寸和屏幕分辨率有关,它是由线的像素点数除以屏幕的大小得到的,关系如下:


  单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

dp、dip、dpi、sp、px

  dp:是Android 特有的,意密度无关像素,Google 布的 BASELINE(基准线)为 160,以此基准。
  dip:Density Independent Pixels,同dp。
  dpi:即屏幕像素密度的
  spScale-IndependentPixels写,可以根据文字大小首选项动进放。Google推荐我使用12sp以上的大小,通常可以使用12sp14sp18sp22sp避免精度失,建最好不要使用奇数和小数。
  px:就是我像素

mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi
  
  文档中介的关系,告知他的比例2:3:4:6:8,其就是160、240、320、480、640的比例。
配以图说明如下:


  了解了以上些“兵”的概念之后,接下来入真解决问题环节。但请记住,只有了解了这些概念,你才能去解决这些问题,所以不要轻视这些概念性的东西,请看下一篇:


     点此进入:Android 人事+技术总贴
       点此进入:Android 基础篇总贴
       点此进入:Android 进阶篇总贴
       点此进入:Android 讨论区

       以上言论,如有错误或者表达不准确或者有纰漏的地方还请指正,同时欢迎大家在评论区留言给予一定的建议,我会根据大家的意见进行相应的改正,谢谢各位!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马