Android drawable图标的匹配顺序
来源:互联网 发布:java微信开发教程 pdf 编辑:程序博客网 时间:2024/05/11 21:47
通常在做适配时,为了适配不同分辨率的屏幕,对于同一个图标(命名为icon.png),我们会在drawable, drawable-mdpi,drawable-xhdpi等文件夹下都放上同名,不同大小的图标。
分辨率与图标大小对应如下:
LDPI (Low Density Screen,0~120 DPI),其图标大小为 36 x 36 px。MDPI (Medium Density Screen, 120~160 DPI),其图标大小为 48 x 48 px。HDPI (High Density Screen, 160~240 DPI),其图标大小为 72 x 72 px。xhdpi (Extra-high density screen, 240~320 DPI),其图标大小为 96 x 96 px。xxhdpi(xx-high density screen, 320~480 DPI),其图标大小为144 x 144 px。xxxhdpi(xxx-high density screen, 480~640 DPI),其图标大小为192 x 192 px。
那么问题来了,如果这些文件夹没有放全,比如drawable-xxhdpi文件夹下没有放这个icon.png,那么分辨率为xxhdpi的机型会匹配到哪个文件夹的icon.png呢?
答案如下:
假设真机分辨率是xxhdpi,那么将按以下顺序依次匹配:
1. 如果drawable-xxhdpi文件夹下有这张图就会优先被使用,在这种情况下,图片是不会被缩放的。
2. 如果drawable-xxhdpi文件夹下没有这张图时, 系统就会自动去其它文件夹下找这张图了,优先会去更高密度的文件夹下找这张图片,我们当前的场景就会去找drawable-xxxhdpi文件夹下的icon.png。
3. 如果发现drawable-xxxhdpi里也没有icon.png这张图,接下来会尝试再找更高密度的文件夹,发现没有更高密度的了,这个时候会去drawable-nodpi文件夹找这张图。
4. 发现也没有,那么就会去更低密度的文件夹下面找,依次是drawable-xhdpi -> drawable-hdpi -> drawable-mdpi -> drawable-ldpi,密度依次减小。
总体匹配规则就是这样,那么比如说现在终于在drawable-mdpi文件夹下面找到icon.png这张图了,但是系统会认为你这张图是专门为低密度的设备所设计的,如果直接将这张图在当前的高密度设备上使用就有可能会出现像素过低的情况,于是系统自动帮我们做了这样一个放大操作,因此图片会被放大显示。
那么同样的道理,如果系统是在drawable-xxxhdpi文件夹下面找到这张图的话,它会认为这张图是为更高密度的设备所设计的,如果直接将这张图在当前设备上使用就有可能会出现像素过高的情况,于是会自动帮我们做一个缩小的操作。
drawable-nodpi文件夹,这个文件夹是一个密度无关的文件夹,放在这里的图片系统就不会对它进行自动缩放,原图片是多大就会实际展示多大。但是要注意一个加载的顺序,drawable-nodpi文件夹是在匹配密度文件夹和更高密度文件夹都找不到的情况下才会去这里查找图片的,因此放在drawable-nodpi文件夹里的图片通常情况下不建议再放到别的文件夹里面。
另外注意:
App应用图标最好放到mipmap文件夹下。其余图片资源放在drawable文件夹下。
- Android drawable图标的匹配顺序
- Android Drawable图标生成工具
- android自带的drawable图标ico名称对应表
- android图标不匹配
- Android Studio下drawable图标和mipmap图标详解
- android自带的drawable图标ico名称对应表 很实用
- 小米手机修改android:icon="@drawable/icon"图标无变化的原因
- android应用是如何自动匹配各个drawable目录的图片的
- 方法的匹配顺序
- android的Drawable
- android的Drawable资源
- android 的Drawable
- Android 的Drawable
- Android的Drawable
- Android的Drawable
- Android的Drawable体系
- Android的各种Drawable
- android的Drawable详解
- svn: E155004 is already locked(文件加锁,执行clean up命令)
- 常用java中I/O流
- 实现FTP文件上传与下载
- 生日悖论的解答
- Windows Server 2012 禁止使用Ctrl+Alt+Del 以及禁止开机启动服务器管理器
- Android drawable图标的匹配顺序
- leetcode 11
- 企业征信信息收集
- 不用判断语句找最大数--程序员面试宝典
- 使用quartz的时候遇见的一个问题
- linux内核编译错误
- Hashtable、synchronizedMap、ConcurrentHashMap 比较
- 二元信号量一个小例子
- velocity-tools spring中使用toolbox的一些破事