Android drawable资源奇怪的行为

时间:2015-03-14 17:43:41

标签: android xml image resources

我在一个文件夹中有26个天气图标,所有加载和显示。当我再添加两个时,那两个因为某些原因没有出现。该应用程序加载正常,没有错误,但有一个空白的空间,应该加载图标图像。

我对应用的背景图片有类似的问题。首先它会在横向模式下拉伸(它是一个肖像图像),所以我创建了一个centered_bg.xml文件,其中包含一个位图元素和图像的src以及gravity:center。在Android工作室中,预览显示正确的行为,图像以纵向和横向为中心,但是当我在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">
...

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

如何加载这些图像?

1 个答案:

答案 0 :(得分:0)

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

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

解决方案是将图像放在名为drawable-nodpi的文件夹中,或者将其缩小。我在Photoshop中将图像重新缩放到了更高维度的160dpi的1280像素,图像加载得很好。