Android 基础篇 — 不同DPI取哪个本地文件夹中的资源

本篇属于实验性内容,只为自我确定问题之用。

1 前期准备

在每个drawable文件夹中放置相应的同名资源文件,而只是资源文件做了些许更改。

如下图pic1.png,每张图都做了一个对应文件夹的标记,如hdpi

2 实验

我使用的测试机信息如下

density: 2.75
densityDpi: 440

获取这些信息的代码如下:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

Log.d("zp_test", "density: " + metrics.density);
Log.d("zp_test", "densityDpi: " + metrics.densityDpi);

drawable资源文件夹与相应的dpi之间的关系如下:

drawable mdpi hdpi xhdpi xxhdpi xxxhdpi
density 1 1.5 2 3 4
densityDpi 160 240 320 480 640

运行程序后,最终在手机上显示的是xxhdpi文件夹中的图。由此可知,手机会去寻找相对应的资源文件进行匹配。

但问题又来了,densityDpi 如果为340,那是匹配xhdpi还是xxhdpi呢?我们直接看Google官方文档的介绍:

Android 基础篇 — 不同DPI取哪个本地文件夹中的资源_第1张图片
不同dpi选择drawable方案.jpg

由上图可知,densityDpi340,匹配的也是xxhdpi文件夹中的内容。这其实很好理解,340如果匹配xhdpi文件夹,那么图片在设备上显示时,需要放大,可能引起模糊。

至于为什么会放大,下篇Android 基础篇 — 放不同drawable文件夹同图片的大小来具体介绍。以后争取做到一篇文章只解决一个具体应用问题。

官方文档地址:支持不同的像素密度

你可能感兴趣的:(Android 基础篇 — 不同DPI取哪个本地文件夹中的资源)