文档章节

Android系统版本及其屏幕适配

Clare_ju
 Clare_ju
发布于 2015/09/09 14:28
字数 1889
阅读 67
收藏 0

 

Android设备分辨率趋势

 对应关系表

资源文件夹   屏幕分辨率  类型  对应图标尺寸 屏幕密度   1dp

xhdpi超高分辨率     1280*720  WQVGA    96*96   320     =2

hdpi 高分辨率          480*800   WVGA    72*72   240      =1.5

mdpi 中等分辨率  480*320  HVGAVGA  48*48      160     =1

ldpi 低分辨率  320*240  QVGA    36*36  120       =0.75

800x480   hdpi

三星 GT-I9082     三星 GT-i8552              

1280x720  xhdpi

三星 SM-G7106     小米3    小米2s    小米2 (1280x722)  红米2  红米2A 

华为荣耀3c  华为G7  华为mate   红米Note    

1080x1920 xxhdpi

三星 N7506V note3    三星GALAXY S4 I9500     小米四  小米note  红米Note2 

华为荣耀6  华为p8    OPPO R7    OPPO N3    OPPO R5

2560 x 1440

小米note 顶配

 

 

 

 

Android布局的时候一般用dp为单位,而我们设计的时候一般用px为单位,这涉及到单位转换问题,而在mdpi下,屏幕密度为160pxdp11关系,即1px =1dp(dpi/160)

所以为了更方便转换,在进行设计的时候,可以优先以mdpi,即320px480px为蓝本进行设计。

dpi(Dots Per Inch):每英寸点数,也可称为像素密度,屏幕对角线像素值÷英寸值

px = dip * density / 160  (density 为屏幕密度 单位:每英寸有多少个显示点)

 

Nexus 5屏幕  4.95inch   1920*1080  DPI = 445

 

 屏幕级别:

  注意屏幕级别是按照密度分级,和像素没有关系。如果非要让密度和像素扯上关系,则需要一个参照系,android使用mdpi级别作为标准参照屏幕,也就是说在320*480分辨率的手机上一个密度可以容纳一个像素。然后其他密度级别则在此基础上进行对比。如果理想情况下,480*800的屏幕一个密度可以容纳1.5个像素。

  物理大小:

  单位是英寸而不是像素,也就说一个英寸在任何分辨率下显示的大小都是一样的,但是像素在密度不同的手机里面显示的实际的大小是不一样的(这就是为什么android手机需要适配的原因)。

  然后就是重点。

  假设1像素在160密度下显示1英寸,则1像素在240密度基础上显示大约0.67英寸,在320密度下显示0.5英寸。于是就出现一种情况,在电脑上的一个像素,在不同的手机上看实际的大小不一样。那么怎么让“设计效果”在不同的手机上看起来显示的区域一样呢?

  还是假设一个像素在160密度下的显示在一个密度内,也假设就是一英寸。那么需要几个像素才能在240密度级别下显示在一英寸范围内呢?答案是1.5个像素(根据上图的比率换算)。

  了解了这个关系,接下来就是图标的制作。

  2、关于切图。

  关于切图有几个建议:

  第一,长宽最好是3的倍数(根据android的推荐logo图标的大小是48mdpi),72hdpi),96xhdpi)得出的最小公约数)。

  第二,长宽最好是偶数。因为奇数在进行等比压缩的时候可能有问题。

  第三,根据上面两条,如果长宽是6的倍数最理想。

  第四,如果可以拉伸而不改变设计意图的情况下,比如纯色背景,则使用android9path工具制作成.9的图片。

  3、关于图标的适配。

  然后接下来的一切就和设计稿没什么关系。在切好图的基础上,根据屏幕密度、像素和实际大小的比例关系。假如设计司在480*800的分辨率下做好了设计图,并且切好图,如果你需要适配720*1280屏幕,该怎么做?根据比例,他们的关系是2:3,于是你需要按照1.5倍比例制作图标,比如你在480*800的设计稿上切下来一个20*20像素的图,那么你就需要制作一个等比放大成30*30像素的图标,这样同一个图标在480*800的屏幕和720*1280的屏幕上显示的实际大小才一样。同理,如果你需要适配xxhdpi则需要在20*20的基础上制作一个等比放大成40*40像素的图标。

  4、关于图标的目录,480*800切下来的图我们放在drawable-hdpi目录下,按照2:3放大的图标放在drawable-xhdpi目录下,按照2倍放大的图标放在drawable-xxhdpi目录下。

  android会根据手机的密度优先查找对应的目录的资源,

  比如408*800分辨率下的手机如果密度是160,则自动加载drawable-hdpi这个目录下的图标,

  如果720*1280密度是240的手机自动加载drawable-xhdpi这个目录下的图标。如果没有这个文件夹,则查找和240最接近的对应密度文件夹。

  三、其它

  根据上面的步骤也不能完全解决适配的问题,只能是大概适配,而就算根据上面的步骤大概适配了,实际在手机上的效果也有出入。

  比如魅族MX3的分辨率是1080*1800,标准情况下密度是480,但是他的密度大约是524,和480接近,也就是会查找drawable-xxhdpi这个资源下的文件。也就是说你在480*800分辨率下切图然后按两倍放大的图标在这台手机上显示的效果还是比实际的小。

  而另一个要说的问题是540*960或者640*960,他们的密度很可能是或者接近240也可能是320。于是在480*800的设计稿上切下来的图并且进行的适配制作,在这些手机上显示的实际大小也可能或大或小。

 

 

 

.9.pngAndroid里所支持的一种特殊的图片格式,可以实现部分拉伸。切图时需要留空白 如下

 

 

res/目录下创建一个不同的layout文件夹、values文件夹、drawable文件夹等资源文件夹

 

资源文件夹命名:资源名-属性1-属性2-属性3-属性4-属性5.....( values-ldpivalues-land-mdpi

即以<resources_name>-<qualifier>格式命名系统会根据屏幕的大小自己选择合适的进行使用。

其中resources_name资源名就是资源类型名,包括:drawable, values, layout, anim, raw, menu, color, animator, xml;

<qualifier> 是一个配置限定符,指定对应的屏幕参数,限定符可以参考以下表:

 

 

 

 

手机特性   资源限定符   描述

 

屏幕尺寸   small    小尺寸屏幕

normal    正常大小的屏幕

large     大尺寸屏幕

xlarge    超大尺寸的屏幕

 

分辨率    320x240    values-ldpi-320x240

480x320    values-480x320

800x480    values-800x480

854x480    values-854x480

960x540    values-960x540values-hdpi-960x540

960x640    values-960x640values-xhdpi-960x640

1024x600   values-mdpi-1024x600

1280x7201280x800 values-1280x720

其他    values-xhdpi-1184x768          values-xhdpi-1280x720          values-xhdpi-1920x1080

 

密度    ldpi     低密度~120dpi

mdpi    中密度~160dpi

hdpi     高密度~240dpi

xhdpi    超高密度〜320dpi 

nodpi    存放无视屏幕密度的资源,如:一些不能被拉      伸的图片放在 drawable-nodpi ,但宽和高要      wrap_content

tvdpi    主要用于电视,大多数App不需要用到

 

方向    land     横向屏幕

port     纵向屏幕

 

版本    v1~v19    新建工程时可以看见,API 1API 19

 

 

 

 

 

 

 

 

 

 

                 Android操作系统趋势

 

 

 

参考:

http://www.cnblogs.com/tinyphp/p/4008400.html

http://www.umindex.com/devices/android_resolutions

http://www.hanshuliang.com/?post=18

 


© 著作权归作者所有

Clare_ju
粉丝 1
博文 4
码字总数 2847
作品 0
大连
私信 提问
android多分辨率多屏幕密度下UI适配方案

前言 Android设计之初就考虑到了UI在多平台的适配,它本身提供了一套完善的适配机制,随着版本的发展适配也越来越精确,UI适配主要受平台两个因素的影响:屏幕尺寸(屏幕的像素宽度及像素高度...

geeksu
2014/08/20
2.8K
0
0-2岁的app开发人员必读,Android开发APP前的准备事项

随着移动互联网的兴起,各行各业对移动应用的需求越来越大,从事APP开发的人也越来越多,APP开发行业可以说是方兴未艾。APP开发是比较复杂的事情,涉及产品、美工设计、服务器端开发、Andro...

传授知识的天使
2018/06/06
33
0
android兼容小米xiaomi刘海屏解决方案

引用自小米官方文档,这里缩减了一些内容,捡取重要内容。 转载请标明出处: https://blog.csdn.net/DJY1992/article/details/80688376 本文出自:【奥特曼超人的博客】 推荐: android 兼容所...

奥特曼超人
2018/06/14
0
0
Android初级第九讲之适配和调试

本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! Android适配需要考虑方方面面,主要是图片字体大小和API,但也要考虑其他场景下的一些问题。 先熟悉一下Android设备的dpi...

liuzxgeek
2016/12/14
0
0
Android P 凹口屏支持,打造全面屏体验

作者: Megan Potoski, Android 系统用户界面产品经理 智能手机发展至今,边框越做越窄,屏幕中横比越做越大。而凹口屏 (又称 "刘海屏") 更是成为各大设备厂商手中的 "神兵利器":既能让用户享...

Android_开发者
2018/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用原生js对表格排序

本文转载于:专业的前端网站➸用原生js对表格排序 阿里的模拟笔试题,当时时间有限没写出来,其实是因为自己对原生dom操作不熟悉,这里补一下。 题目的大意是有一个表格,如代码所示 <table>...

前端老手
20分钟前
3
0
IT兄弟连 HTML5教程 HTML5表单 HTML5新增表单元素

HTML5有一些新的表单元素:<datalist>、<keygen>、<output>。不是所有的浏览器都支持HTML5新的表单元素,但即使浏览器不支持该表单属性,仍然可以显示为常规的表单元素。 1 <datalist>元素 ...

老码农的一亩三分地
21分钟前
3
0
【朝花夕拾】Android自定义View篇之(一)View绘制流程

https://www.cnblogs.com/andy-songwei/p/10955062.html

shzwork
23分钟前
4
0
Qt编写自定义控件70-扁平化flatui

一、前言 对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产...

飞扬青云
33分钟前
2
0
教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部