Android屏幕适配规则

要适配不同的屏幕,首要需要的是要能够将不同的屏幕分辨出来,android提供了若干不同的维度来进行限定(qualifier,有的翻译为限定词)

上图所示为常用的一些维度,不过不是全部,全部的维度可以在官方的列表中查找。

图中从左到右按照箭头指示方向的优先级依次降低(查找匹配资源的时候会用到优先级),同时在对res子目录采用限定词进行命名的时候,也必须按照这个优先级进行命名,例如res-sw600dp-port是对的而res-port-sw600dp就会出现编译错误。有些维度可以有很多不同的具体参数,如smallestWidth,有些只能有固定的一些选择,如语言,屏幕方向port/land这种。

以下分别来介绍各个维度:

1、语言(zh-rCN), 主要可以用ISO 639-1标准定义的两个字母的语言代码

2、smallestWidth最短可用宽度(sw-<N>dp),这个是从android3.2开始加入的,表示设备可用的最短宽度,与屏幕方向无关。但是,这个参数在使用时会涉及到屏幕上的一些组件,如果屏幕上有navigation bar等,则最短可用宽度可能并不到屏幕的最短边的数值,因为这个参数指的是我们的UI可用的区间。

适配流程:当多个目录都使用了该限定词的时候,匹配原则为不大于可用宽度的最大值。即如果屏幕最短边为1536,屏幕密度为xhdpi(即320dpi),1536/2 = 768,则在所有的sw-<N>dp中选择小于等于768的最大值,也即向下查找匹配。

3、available width(w-<N>dp与smallestWidth类似,但是与屏幕方向有关,向下匹配

4、screenSize屏幕尺寸,根据屏幕对角线大小来界定(单位inch-英寸),可分为small/normal/large/xlarge。适配顺序为从高到低,如果只有超过当前实际尺寸的目录中有定义,则crash。这个维度从android3.2开始已经不建议使用,建议采用shortestWidth。

5、屏幕方向,这个是最简单的,横向纵向

6、Screen density屏幕密度(dots per inch),ldpi/mdpi/hdpi/xhdpi/xxhdpi分别对应的屏幕密度为120/160/240/320/480/640dpi,在放置资源的时候资源大小也要按照相应比例。(决定1dp代表多少pixel)。

适配流程:优先从当前屏幕密度匹配的目录查找,如果没有则不断向上层查找(倾向于将大图片缩小,而不是小图片放大),如果上层没有则向下层查找,如果都没有,才取默认的目录,定位到特定目录后,会根据定位到的目录与当前屏幕密度的比例关系进行缩放操作。

7、分辨率 (800*480,官方文档上已经没有,但目前仍可使用,优先级介于nav和platform之间,适配顺序为从高到低

8、Platform version:参见Api Levels。适配顺序也是从高到低

Android资源匹配流程:

Best practice:

1、为不同的屏幕尺寸及方向提供不同的layout,dimen

2、为不同的屏幕密度dpi提供不同的drawable

3、提供默认资源防止crash

4、修改某个目录下的值的时候,确认其上层是否有配置该参数值,如果有,则可以直接修改;如果没有,则要将本层的值复制到上层之后再来修改本层的值

Android官方:

https://developer.android.com/guide/topics/resources/providing-resources.html

https://developer.android.com/guide/practices/screens_support.html

时间: 2024-08-09 19:36:25

Android屏幕适配规则的相关文章

Android屏幕适配原理

大纲 1.android中res目录下的文件夹所对应屏幕尺寸 2.用dp表示尺寸的原理 3.对于720p尺寸的适配需要注意什么 4.ui切图按什么尺寸给最好 参考:http://www.360doc.com/content/12/0301/17/5087210_190881395.shtml 几个概念: 1) 屏幕密度(dpi) :dot per inch,即每英寸像素数. ldpi(120),mdpi(160),hdpi(240),xhdpi(320) 计算方法: 以480x854,4.0in

Android屏幕适配问题详解

上篇-Android本地化资源目录详解 :http://www.cnblogs.com/stafen/p/3833048.html 单位: px(像素):屏幕上的点. in(英寸):长度单位. mm(毫米):长度单位. pt(磅):1/72英寸. dp/dip(与密度无关的像素):一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dp = 1px,在大于160点的显示器上可能增大.一般用于位置和尺寸属性的单位. dpi:表示当前屏幕的密度. sp(与刻度无关的像素):主要用于字体大小单位

Android屏幕适配攻略

Android适配攻略 一.屏幕适配的必要性 为什么Android需要适配? 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对Android进行定制,修改成他们想要的样子. 但是这种"碎片化"到底到达什么程度呢? 在2012年,OpenSignalMaps(以下简称OSM)发布了第一份Android碎片化报告,统计数据表明, 2012年,支持Android的设备共有3997种. 2013年,支持Android的设备共有11868种. 2014年,支持Andr

android屏幕适配详解

android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如果是纯色背景,尽量使用android的shape 自定义. 5.如果需要在特定分辨率下适配,可以在res目录上新建layout

Android屏幕适配

1.基本概念 屏幕大小(screen size) —— 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).android把屏幕分为以下4种:small,normal,large,extra large 屏幕密度(Screen Density) ——  一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点).相比起medium.high屏幕密度的设备,在一块确定大小的屏幕区域l密度为low的屏幕拥有的像素更少.android把屏幕密度分为4种:low,medium,h

Android屏幕适配全攻略(最权威的官方适配指导)

Android屏幕适配全攻略(最权威的官方适配指导)

Android屏幕适配全攻略

看到一篇写的超级棒的文章,这里就直接贴地址了: 原文地址:http://blog.csdn.net/zhaokaiqiang1992/article/details/45419023 其他参考资料: android屏幕适配详解:http://www.cnblogs.com/error404/p/3815739.html 官方意见:http://developer.android.com/guide/practices/screens_support.html

【转】Android屏幕适配全攻略(最权威的官方适配指导)

Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获! Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi 解决方案 支持各种屏幕尺寸 使用wrap_contentmatch_parentweight 使用相对布局

Android屏幕适配全攻略(最权威的官方适配指导)

Android屏幕适配出现的原因 在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配. 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对Android进行定制,修改成他们想要的样子. 但是这种"碎片化"到底到达什么程度呢? 在2012年,OpenSignalMaps(以下简称OSM)发布了第一份Android碎片化报告,统计数据表明, 2012年,支持Android的设备共有3997种. 2013年,支持Android的设备