Android支持多屏幕尺寸和多屏幕密度

屏幕尺寸:
屏幕尺寸被分为small, normal, large, and extra-large四个类别

这里写图片描述

具体每一个类别的物理尺寸的大小是多少呢?
Google文档里面是这样说的:

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp

xlarge的屏幕是960dpx720dp究竟是多大呢? 为啥不直接告诉我们物理尺寸?让我来算出来给你们吧。
要算出宽和高,我们只需要知道一个dp是多少inch就可以了,在mdpi的屏幕上1dp刚好等于1px,而mdpi是160dpi,也就是说是一英寸上面有160个px,也就是说1dp=1/160inch。

所以我们把xlarge的屏幕数据改写一下:(960/160)x(720/160)也就是6inch x 4.5inch,屏幕的大小是对角线的长度,所以我们再来算一下平方开根,结果是7.5

把上面的数据改写一下就是
xlarge 至少 7.5
large 至少 5
normal 至少 3.5
small 至少 3.3

如何适配多屏幕尺寸和多屏幕密度?
第一、创建多个layout文件夹并用qualifier进行修饰,layout可以用的qualifier包括size qualifier、orientation qualifier。size qualifier中具体有:small、normal、large、xlarge以及在api13之后才支持的swdp、wdp,hdp。

第二、某些图片需要为不同的屏幕密度准备不同的版本,通常,如果某UI元素是要求固定的物理显示尺寸时,需要我们为不同的屏幕密度准备不同分辨率的版本。那么如何决定各个版本的分辨率大小?很简单,根据各个屏幕密度的关系就可以算出,比如我们某张图片的mdpi版本是100x100,那么ldpi的版本的分辨率就是75x75,hdpi就是150x150,xdpi就是200x200。

bitmap的scale有两种,pre-scale和auto-scale,pre-scale是bitmap在被加载到内存时进行的,auto-scale是bitmap被画到canvas上面时进行的。

使用BitmapFactory从文件中解码图片时,可以通过Options的inDensity参数指定图片的源密度,如果inScale设置为true,那么decode时图片就会进行pre-scale操作。

另外要注意:drawable-xxxhdpi是为launcher icon准备的,不可以在里面放应用的图片

mipmap-系列的文件夹是专门为launcher icon处理的,一些设备会把launcher icon向上扩大25%,如果你的launcher icon已经是xxhdpi的了,由于找不到更大密度的版本了,系统会把你的launcher icon进行向上缩放的操作,导致你的icon看起来不是那么好,在这种情况下,你应该在mipmap-xxxhdpi目录下放一张你对应的launcher icon对应版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值