Android 可绘制资源奇怪的行为

Android drawable resources strange behaviour

我一个文件夹里有26个天气图标,全部加载显示。当我再添加两个时,由于某种原因,这两个没有出现。该应用程序加载正常并且没有错误,但是有一个空的 space 图标图像应该加载的地方。

我对应用程序的背景图片有类似的问题。起初它会在横向模式下拉伸(它是纵向图像),所以我创建了一个 centered_bg.xml 文件,其中包含一个位图元素和图像的 src 以及 gravity:center。在 Android studio 中,预览显示正确的行为,图像在纵向和横向中都居中,但是当我 运行 我的 Note 3 设备上的应用程序时,背景图像不显示。

centered_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/london"
    android:gravity="center"></bitmap>

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/centered_bg">
...

当我尝试加载高分辨率图像(它只有 700kb)时,我也遇到了 OutOfMemory 错误,但在清单中添加 android:largeHeap="true" 解决了这个问题。直接在布局文件中链接时会加载图像,但在 centered_bg.xml 中时不会显示。

如何加载这些图片?

drawable 文件夹中的背景图片为 72dpi。 Android 假设它是 160dpi 并将图像从 1920x1080 放大到大于 OpenGL 可以处理的最大尺寸,然后图像无法加载。

OpenGL 的最大尺寸限制为 4096x4096。

解决方案是将图像放在名为 drawable-nodpi 的文件夹中,或者以其他方式将其变小。我在 Photoshop 中将图像在 160dpi 的更高维度上重新缩放为 1280px,并且图像加载正常。