屏幕适配

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、适配手机尺寸问题

  1. 布局上选择,合理的使用布局
  2. 使用wrap_content,match_parent,weight
  3. 布局别名的使用:为了适应手机和平板之间的适配问题,并且平板可能有两套布局,使用布局别名,把平板的两套布局使用一个。进行统一管理
  4. 方向限定符:在横竖屏切换的时候加载不同的布局。
  5. 9patch图片的使用。

5、屏幕密度的问题

  1. 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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值