为什么一些xhdpi手机只显示位于/ res / drawable的图像?

这是一个场景。 有文件夹:

  • 绘制
  • 绘制,LDPI
  • 绘制,MDPI
  • 绘制,华电国际
  • draawble-xhdpi

一个图像(通常是背景,但不是仅限于这样的图像)仅位于/res/drawable

我在Galaxy S3上testing应用程序,并且正确显示背景。 我在HTC One X上testing,背景图像没有显示。

如果我将图像从/res/drawable复制到/res/drawable-xhdpi ,则One X将显示图像。

从逻辑上思考,这不应该发生 ,对吧?! 如果drawable-xhdpi没有图像,那么Android应该将其drawable-xhdpi其他文件夹,直到它到达默认的一个/res/drawable ,并且应该从那里拉它。

为什么这不会发生在一些手机?

PS。 我注意到与某些平板电脑相同的问题,但现在我不记得哪一个。

PPS。 我在这里提到了背景图片,但这个问题不一定就是这个问题。 它也发生在其他图像。 我知道,xhdpi手机有大图像的问题,我不希望你认为这个问题是背景图像太大。 其他“正常”尺寸的图像也会发生这种情况。

Solutions Collecting From Web of "为什么一些xhdpi手机只显示位于/ res / drawable的图像?"

你为什么要把一个图像文件放入可绘制文件夹?

根据我读过的互联网提示,你不应该把图像文件放在可绘制文件夹中。

在可绘制文件夹中,只放置了xmltypes的drawable。

如果要放置图像文件,请将其放入下列任何一个文件夹中(或为其添加其他限定符,或使用其他限定符):

  • drawable-nodpi(仅适用于您不知道尺寸大小的图像)
  • 绘制,LDPI
  • 绘制,MDPI
  • 绘制,华电国际
  • 绘制,xhdpi
  • 绘制,tvdpi

放入可绘制文件夹的图像被视为默认值,即mdpi。 所以如果你想保持文件在相同的屏幕密度类别,把它放到drawable-mdpi文件夹中。

不把图像放入可绘制文件夹的另一个原因是,android会自动将文件转换为16位图像,用于某些设备(如三星Galaxy S),这会使图像在某些情况下看起来很糟糕。

这里有一个解释这个问题的链接。

我用一个只在“res / drawable”文件夹中绘制的项目做了一个项目,在我的One X上进行了testing,并确认图像显示:
https://github.com/lnanek/Misc/tree/master/TestOneXDrawableFolder

布局:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageView android:src="@drawable/drawableonly" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> </RelativeLayout> 

资源:

 res res/drawable res/drawable/drawableonly.png res/drawable-hdpi res/drawable-hdpi/ic_launcher.png res/drawable-ldpi res/drawable-mdpi res/drawable-mdpi/ic_launcher.png res/drawable-xhdpi res/drawable-xhdpi/ic_launcher.png res/layout res/layout/activity_main.xml res/menu res/menu/activity_main.xml res/values res/values/strings.xml res/values/styles.xml res/values-v11 res/values-v11/styles.xml res/values-v14 res/values-v14/styles.xml 

你可以尝试弄清楚你在做什么,可能会触发一些其他的行为。 请记住,有一个“drawable”文件夹和一个“ drawable-mdpi ”文件夹有点奇怪,因为可绘制的文件夹默认是mdpi密度。 这两者中的哪一个可以被使用,可能不是确定性的。 我知道使用密码说明符会自动在现代构build工具中附加-v4来解决Android 1.5不能理解这些说明符并正确处理它们的问题,所以drawable-mdpi-v4可能会被认为具有更多的说明符并且匹配优先级比较绘制。 无论如何,这两个文件夹都有一个mdpi密度类,所以请记住,如果从那里使用从任一文件夹的绘图将自动放大。