博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android分享] 彻底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi
阅读量:6243 次
发布时间:2019-06-22

本文共 954 字,大约阅读时间需要 3 分钟。

来自: 

非常感谢楼主分享

 

这个问题我相信困惑了好多人包括很多老鸟,而且有的人以为自己理解其实是错误的,包括之前的我在内,一般让美工做720*1280的切图,就直接放到xhdpi下,如果是做了1080*1920,就直接放到xxhdpi下。其实这四个文件夹和具体的屏幕分辨率是没直接关系的,上面说的做法也有一定道理,因为大部分的720*1280的手机都是高密度手机,1080*1920都是超高密度手机,但是这四个文件夹之和屏幕密度有关,和具体分辨率无关。

下面给出一个最最关键的等式:
low:medium:high:extra-high:extra-extra-high=3:4:6:8:12
OK,就是说五个文件夹的比例为3:4:6:8:12。具体是怎么回事呢?下面分析一下:
比如我用一个480*800的4寸手机,这个手机的屏幕密度按照Google的说法,就属于密度为high level的水平(通过分辨率和屏幕尺寸计算密度,然后google自己有一套标准说你位于哪个范围属于哪个level的密度水平),然后这个手机的应用在用图片的时候,就会去hdpi下去找,并且以这个文件夹的图片为标准,也就是说比如我的应用去取一张aa.png的图片,这个图片的原图尺寸为30*30,恰好hdpi下有一张,那这张图片显示到屏幕上以后,它的显示尺寸长宽都为30px。那问题来了,但如果我的hdpi下没有这张图片,而只在xhdpi下有这张图片,图片的原图尺寸是30*30,那请问显示到屏幕上的图片的尺寸会是多大呢,还是长宽都为30px吗?
答案是否定的,而且现在就用到了上面那个比例,high:extra-high=6:8。先明确这样一个问题,如果我的屏幕是hdpi的,结果我的图片是放到了xhdpi下,那系统会把这张图片进行缩小显示,也就是说我的xhdpi下放了一张30*30的图片,那显示当hdpi屏幕上肯定要比30*30小,这样才能保证说大小屏幕界面显示效果是一致的,因为密度小的手机显示一张图片要比密度大的手机显示同一张图片的面积要大,要想显示面积一样就必须要把图片搞小点。接上面的问题,

假设显示在我的hdpi屏幕上的图片的宽度为x,那满足以下等式:

6:8=x:30 。  
可得到x=22.3,向后取整数得23 。

转载地址:http://jasia.baihongyu.com/

你可能感兴趣的文章
SVN(64位)报 Failed to load JavaHL Library. 的解决方法
查看>>
基本运算符
查看>>
黄聪:WordPress 多站点建站教程(三):主站如何调用子站的文章内容、SQL语句如何写?...
查看>>
Activity的启动模式 4种launchMode Intent.FLAG_NEW_TASK 详解
查看>>
hdu 2254 奥运 **
查看>>
数据结构基础
查看>>
UltraISO制作ISO镜像文件
查看>>
ASP.NET MVC 之自定义HtmlHelper
查看>>
声明顺序
查看>>
memcpy内存重叠的解决
查看>>
保存和恢复activity的状态数据[转]
查看>>
JS中call、apply的用法说明
查看>>
C#中对于Enum类型的遍历
查看>>
使用tomcat启动dubbo项目
查看>>
crontab + shell脚本实现文件重命名
查看>>
谈谈-ConstraintLayout完全解析
查看>>
fluent-ffmpeg 常用函数
查看>>
Robot Framework(十五) 扩展RobotFramework框架——远程库接口
查看>>
Eclipse中没有javax.servlet和javax.servlet.http包的处理办法
查看>>
汽车加工厂
查看>>