屏幕适配小结

一、相关术语
屏幕尺寸:
Andorid 中的所有实际的屏幕尺寸分为四个广义大小:小,正常,大和超大。
(small,normal,large,and extra-large)

屏幕像素密度:
屏幕的物理区域内的像素的数量:通常被称为 dpi(每英寸点数)
Android 中的所有实际的屏幕密度分为六个广义密度:
低,中,高,超高,超超高,超超超高。
Low,medium,high,extra-high,extra-extra-high,and extra-extra-extra-high。

方向:
从用户的角度看到的屏幕的方向。一般为纵向或横向,即屏幕的宽高比。

分辨率:
在屏幕上的物理像素的总数。
密度无关的像素(DP):
虚拟像素单元。在定义 UI 布局的时候,你应当使用与密度无关的方式来表示布
局尺寸或位置。

屏幕支持的范围:
Android 把实际的屏幕尺寸和密度分成如下范围:
一组(四个)广义大小:小,正常,大和超大
一组(六种)广义密度:
ldpi(low):——120dpi
mdpi(medium):——160dpi
hdpi(high):——240dpi
xhdpi(extra-high):——320dpi
xxhdpi(extra-extra-high):——480dpi
xxxhdpi(extra-extra-extra-high):——640dpi

不同大小和密度大致分为不同的大小和密度组:
这里写图片描述

超大屏幕是至少 960dp x 720dp
大屏幕是至少 640dp x 480dp
正常屏幕是至少 470dp x 320dp
小屏幕是至少 426dp x 320dp

二、解决图片适配的问题
Android 中的图片适配是一件很棘手的事情,比如一张同样大小的图片在不同屏
幕上显示的大小是不一样的。

ppi(pixel per inch)名词,就是每英寸的距离的像素点的个数。
例如:HVGA 屏 320 * 480,一般是 3.5 寸,计算点密度为:
√(320*320 + 480*480)/ 3.5=164, 约等于 160。

ppi 超低图片显示的越大,ppi 越高图片显示的越小。如下图所示:
这里写图片描述

要想达到在不同的屏幕上图片显示的大小一样,如下图所示,我们应该为不同
ppi 的设备提供不同的图片,Android 系统会自动去匹配相应的图片。
这里写图片描述

创建用于不同密度可替代的位图,
你应该遵循 3:4:6:8:12:16 缩放比例六广义密度
之间。例如,如果你有一个位图 drawable 的中等密度屏幕 48 x 48 像素,所有不
同的大小应为:

36x36 (0.75x) for low-density
48x48 (1.0x baseline) for medium-density
72x72 (1.5x) for high-density
96x96 (2.0x) for extra-high-density
144x144 (3.0x) for extra-extra-high-density //官方文档这里写错了
192x192 (4.0x) for extra-extra-extra-high-density

三、解决布局适配的问题

我们已经解决了资源图片的适配问题,但是图片的大小不同势必会造成布局的差异,如果使用一个统一的布局文件,可能会造成资源图片无法完整显示在屏幕内,所以对于这种问题,解决方法是建立不同的 layout 文件夹,对于不同屏幕的分辨率,书写其专用的.xml 文件。多个 layout 文件夹在命名上有相应的规则,

(1)以分辨率 480 x854 的为例,需要建立 480 x 854 像素的 layout 文件夹。
命名:layout-854x480
有两点需要注意:
a. 大数(854)必须在前,否则会报错;
b. 两个数字之间的符号是小写英文字母”x”,不是乘号。
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的布局文件。

(2)根据最小屏幕宽度来定义相应的 layout 文件夹:如 layout-sw820dp。
(3)根据不同的语言来定义相应的 layout 文件夹:如 layout-en-rUS

(4)根据不同的模式来定义相应的 layout 文件夹:如 layout-notnight
(5)根据不同的方向来定义相应的 layout 文件夹:如:layout-port

(6)还有其他很多种方式来定义 layout 文件夹,
这在 AndroidStudio 中可以清楚的看到,AndroidStudio 中的操作如下:

1、打开想要编辑的布局,切换到 design 界面,点击布局小图标右边的小三角进
行 Create Other 操作:
这里写图片描述

这里写图片描述

2、接下来选择不同的方式来定义 layout 文件夹即可。
这里还可以预览多个 layout 的效果:
这里写图片描述

四、小结

为每个 drawable 目录都生成对应的图片版本,图片较多的话会无形增加应用的大小,假设我们在 drawable-hdpi(对应的 ppi 为 160ppi)目录下存放了一个100x100 的图片,那么当图片需要在 320ppi 的 Android 设备上进行显示时,Android系统会自动将图片进行处理生成一个 200x200 的图片显示到设备上,那么他们占用的空间大小分别为 100/160=3/5 inch,200/320=3/5 inch 可以看出他们占用的长和宽都是一样的,这种自动缩放的优点是只需要一张图片就能适应各种 ppi 类型的屏幕。缺点是当对 100x100 的图片进行变换成 200x200 的图片时肯定会造成图片的不清晰。

建议是将比较重要的图片资源提供多个版本(当 Android 设备和自己的 ppi相对应的 drawable 下找到想要的资源时,就不会再到其他目录寻找资源)。不是很重要的图片资源都存储一个版本,让系统根据自己的 ppi 自己对图片进行适当的缩放显示。

更多资料请参见:/AndroidSdk/docs/guide/practices/screens_support.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值