您的位置:首页 > 其它

屏幕适配

2016-09-06 00:44 176 查看

1、屏幕适配的重要概念

Android机型众多,屏幕适配也比较麻烦。



1、主要是屏幕尺寸,分辨率,像素密度

屏幕尺寸:对角线的长度,1英寸=2.54厘米。比如说5英寸

屏幕分辨率(px):横纵像素点个数。单位px,1px就是一个像素点。例如现在手机1920*1080(纵向1920px*横向1080px)

像素密度(dpi):每英寸上的像素点数(dot per inch)屏幕像素密度与屏幕尺寸和分辨率关。

2、像素密度(dpi)如何计算

上面为例5英寸手机,1920*1080分辨率下,dpi是多少呢

dpi=\sqrt{1920^2+1080^2}/5≈441

2、开发中常用的几个概念



px:android中包括系统都是用的这个计量单位,比如获取一个button的高,返回的就是px;

dp,dip(Density Independent Pixels):密度无关像素。

指的是逻辑密度计算单位,dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)

sp(Scale-Independent Pixels):可以根据文字大小进行放缩。Google推荐使用偶数单位12,14,18,22做为首选大小,最好不要使用基数或者小数做为单位,可能造成精度丢失。

3、mdpi,hdpi,xdpi,xxdpi



4、适配手机尺寸问题

布局上选择,合理的使用布局

使用wrap_content,match_parent,weight

布局别名的使用:为了适应手机和平板之间的适配问题,并且平板可能有两套布局,使用布局别名,把平板的两套布局使用一个。进行统一管理

方向限定符:在横竖屏切换的时候加载不同的布局。

9patch图片的使用。

5、屏幕密度的问题

sp,dp的使用

6、图片的适配问题

Android图片选择策略

上面说到, 如果屏幕所对应的文件夹没有要找的图片,怎么办。这是很常见的,我们开发项目时一般不会去为每一个级别的屏幕去切一套图片。那样做只会让apk很大。所以一般性的图片我们只切一两个典型密度屏幕的图片。但是apk是有可能会运行在从ldpi到xxhdpi的各种级别的手机上。这个时候就需要根据一定的策略去寻找图片了。

Android系统寻找图片的步骤是这样的:

1, 去屏幕密度对应的目录去找。如果找到就拿来用。

2, 如果没找到,就去比这个密度高一级的目录里面去找,如果找到就拿来用。

3, 如果没找到就继续往上找。以此类推。

4, 如果到了xxhdpi目录还没有找到的话,就会去比自身屏幕密度低一级的目录去找,如果低一级的目录>=hdpi,找到了就拿来用。

5, 如果没找到, 就去mdpi目录去找, 如果找到了,就拿来用。

6, 如果没找到,就去默认的drawble目录里去找, 如果找到了就拿来用。

7 ,如果没找到,再去最低的ldpi目录里去找。如果找到了,就拿来用。

8, 如果没找到, 那就是没找到了, 图片无法显示。(不过一般不会出现这种现象,因为如果每个目录都没有这个图片的话,你是编译不过的)

这里有两点需要注意:

① 首先会去比自己密度高的目录里去找,这是因为因为系统相信,你在密度更高的目录里会放置分辨率更大的图片,这样的话这个图片会被缩小,但同时显示效果不会有损失,但是如果优先去低一级别的目录去找的话, 找到的图片就会被放大,这样的话这个图片就会被拉扯模糊了。

e.g. 同一张图片,你在mdpi和xxhdpi目录各放了一份, 这个应用你现在运行在hdpi的手机上, 那应用会选择哪张图片呢。答案是xxhdpi目录里的。即便hdpi离mdpi更近一点!

②,如果在mdpi里找不到是不会直接去ldpi里找的, 而是先去默认的drawble目录里找,这是drawble目录和drawble-mdpi是一个级别的。

参考博客

http://blog.csdn.net/xiebudong/article/details/37040263
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: