屏幕适配全攻略_第1页
屏幕适配全攻略_第2页
屏幕适配全攻略_第3页
屏幕适配全攻略_第4页
屏幕适配全攻略_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、三分钟搞定安卓适配问题 Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dp dip dpi sp px mdpi hdpi xdpi xxdpi 解决方案 1、图片适配 2、尺寸适配 3、布局适配 4、代码适配 5、权重适配 一:Android屏幕适配出现的原因 由于Android系统的开放性,任何用户、开发者、OEM厂商、运营商都可以对 Android进行定制,修改成他们想要的样子。但是这种“碎片化”到底到达什么程度呢? 在2012年,OpenSignalMaps(以下简称OSM)发布了第一份Android碎片化报告,统计 数据表明, 2012年,支持And

2、roid的设备共有3997种。 2013年,支持Android的设备共有11868种。 2014年,支持Android的设备共有18796种。 右边这张图片所显示的内容足以充分说明当 今Android系统碎片化问题的严重性,因为 该图片中的每一个矩形都代表着一种Android设备 详细的统计数据请到查看 而随着支持Android系统的 设备(手机、平板、电视、 手表)的增多,设备碎片化 、品牌碎片化、系统碎片 化、传感器碎片化和屏幕 碎片化的程度也在不断地 加深。而我们今天要探讨 的,则是对我们开发影响 比较大的屏幕的碎片 化。 右一是Android屏幕尺寸的 示意图 蓝色矩形的大小代表不同

3、尺寸,颜色深浅则代表所 占百分比的大小。 右二只是4,4s,5,5c,5s和平 板的尺寸,现在还应该加 上新推出的iphone6和plus ,但是和Android的屏幕碎 片化程度相比而言,还是 差的太远 二,重要概念 1. 什么是屏幕尺寸、屏幕分辨率、屏幕像素密度? u 屏幕尺寸:是指屏幕对角线的长度。单位是英寸,1英寸=2.54厘米; 比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等 u 屏幕分辨率:是指在横纵向上的像素点数,单位是px,1px=1像素点,一般是纵向像素 横向像素,如1280720; u 屏幕像素密度:是指每英寸上的像素点数,单位是dpi

4、,即“dot per inch”的缩写,像 素密度和屏幕尺寸和屏幕分辨率有关。在单一变化条件下,屏幕尺寸越小、分辨率越高 ,像素密度越大,反之越小。 u 三者关系 例如:计算Nexus5的屏幕像素密度: 屏幕尺寸:4.95inch、分辨率:19201080,屏幕 像素密度:445 2.dp、dip、dpi、sp、px px我们应该是比较熟悉的,前面的分辨率就是用的像素为单位, 大多数情况下,比如UI设计、Android原生API都会以px作为统一的计量单位, dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像 素,上面我们说过,dpi是屏幕像素

5、密度,假如一英寸里面有160个像素,这 个屏幕的像素密度就是160dpi,那么在这种情况下,dp和px如何换算呢?在 Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则 1dip=2px,以此类推。 sp,即scale-independent pixels,与dp类似,但是可以根据文字大小首选项 进行放缩,是设置字体大小的御用单位。 假如同样都是画一条480px的线,在720*1280分辨率手机上显示为2/3屏幕宽度 ,在480*800的手机上则占满了全屏,如果使用dp为单位,在这两种分辨率下 160dp都显示为屏幕一般的长度。这也是为什么在Android

6、开发中,写布局的时 候要尽量使用dp而不是px的原因。下页图例 3. 什么是mdpi、hdpi、xdpi、xxdpi、xxxdpi?如何计算和区分? 用于区分不同的像素密度。 现在主流的手机,都可以找到自己所在的屏幕密度档次。比如一般来说720p的手 机是xhdpi,1080p的是xxhdpi。还有一种情况,比如同样都是4 英寸的480*800和 4英寸的960*540,尽管实际算出来的dpi不一样,但是都要归到hdpi这一档,dpi都 变成了240,这是Android 系统做的一种近似处理,目的是为了简化计算。也就是 说,虽然实际上手机的密度有很多种,但是大家会找到自己的近似区间,然后用区

7、间的代表值去做运算。 根据前面讲的屏幕密度区间,你可以记住这样一个简单的计算方法: dp 是一个虚拟的概念,是在程序运行的时候算出来的。怎么理解呢?Android 设备那么多,分辨率也那么多,直接学iOS用px做单位肯定不行的。为此 Google搞了一个叫dp的东西,换算公式是dp=(dpi/160)*px。也就是说,在 密度为160dpi的屏幕上,1px就是1dp。依次类推, 在320dpi的屏幕上,1dp就 是2px。屏幕密度越大,1个dp对应的px也就越多。 二,解决方案-屏幕适配 1、图片适配 2、尺寸适配 3、布局适配 4、代码适配 5、权重适配 1、图片适配 图片的查找顺序: ld

8、pi 、mdpi 、 hdpi 、xhdpi、xxhdpi、xxxhdpi 先找自己对应的文件夹,再往大的找,大的文件夹中没有图片,就 再往小的找 例如mdpi(480*320)的手机,查找顺序如下 mdpi 、drawable 、 hdpi 、xhdpi、xxhdpi、xxxhdpi、ldip 2、尺寸适配 根据分辨率创建相应values文件夹, 比如 values-1280 x720 (大值在前) 在values文件夹下创建:dimens xml文件 在values-800 x480文件夹下创建:dimens xml文件 在values-1280 x720文件夹下创建:dimens xml

9、文件 代码演示屏幕宽度的一半。 相应的,在开发的时候,Google提供了一些资源目录,你可以 把对应大小的图片放进去。 举个例子,你想展示一张100dp*100dp的图片,那么 在mdpi目录下,你需要放100px*100px的原图。 在xxxhdpi下,这张图片就得是 300px*300px。你的APP在运行的时候,如果需要加载 这张图片,系统就会根据当前手机的密度,去相应的资源目录下去找。你可能会问, 找不到怎么办呢?比如当前是mdpi的手机,系统发现mdpi下没有这张图,就会去比 mdpi更大的目录找,然后进行缩放。实在找不到就去比mdpi更小的目录找, 找到之 后再拉伸。那么设计师在出

10、图的时候,有两种方法可以选。 一是按照官方的推荐方法,在上面所有目录下各放置一份同样的图片,根据dp和px的 换算关系切成不同的大小,让系统自动去寻找最合适的图片。这种方法成倍的增加设 计师的工作量不说,还会增加安装包的体积,用户下载的时候要多耗费流量。 第二种方法是选一个基准的屏幕密度,比如xhdpi,720p。所有的资源都放在这里, 让系统自动 去缩放。这种方法呢,对于小屏幕的手机来说,因为要在运行的时候把一 张大图缩放成小图,不如直接用小图节省内存。对大屏幕的手机呢,比如你720p的图 拿 到1080p的手机去显示,肯定会因为缩放而失真。 综合起来的话,我更倾向于第二种方法。具体选择哪种屏幕密度做标准,你可以参考 下Google官方的统计或者友盟上面的主流分辨率。 3、布局适配 和图片适配差不多。我们可以为不同的屏幕创建 不同的layout文件夹 如果我们想让大屏幕的手机显示布局和别的手机不一样,就可以再 为大屏创建一个layout。 根据分辨率创建layout

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论