Java 为什么不';某些xhdpi手机是否仅显示位于/res/drawable中的图像?
这是一种情况。有以下文件夹:Java 为什么不';某些xhdpi手机是否仅显示位于/res/drawable中的图像?,java,android,android-layout,htc-android,Java,Android,Android Layout,Htc Android,这是一种情况。有以下文件夹: 可牵引 可拉伸低密度聚乙烯 可拉伸mdpi 可拉伸hdpi 可拖动xhdpi 图像(通常为背景,但不限于此类图像)仅位于/res/drawable中 我在Galaxy S3上测试了应用程序,背景显示正确。我在HTC One X上测试,背景图像未显示 如果我将图像从/res/drawable复制到/res/drawable xhdpi,X将显示图像 从逻辑上考虑,这不应该发生,对吧?!如果drawable xhdpi中没有图像,那么安卓应该在其他文件夹中查找它,直
- 可牵引
- 可拉伸低密度聚乙烯
- 可拉伸mdpi
- 可拉伸hdpi
- 可拖动xhdpi
/res/drawable
中
我在Galaxy S3上测试了应用程序,背景显示正确。我在HTC One X上测试,背景图像未显示
如果我将图像从/res/drawable
复制到/res/drawable xhdpi
,X将显示图像
从逻辑上考虑,这不应该发生,对吧?!如果drawable xhdpi
中没有图像,那么安卓应该在其他文件夹中查找它,直到它到达默认文件夹/res/drawable
,并且应该从那里提取它
为什么有些手机上不会发生这种情况
另外,我在一些平板电脑上也注意到了同样的问题,但我现在记不起是哪种了
PPS。我在这里提到了背景图像,但问题并不局限于此。其他图像也会出现这种情况。我知道xhdpi手机在大图像方面存在问题,我不希望您认为问题在于背景图像太大。其他“正常”大小的图像也会出现这种情况 我制作了一个只在“res/drawable”文件夹中的可绘图项目,在我的One X上进行了测试,并确认显示了图像:
布局:
<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>
你可以试着找出你正在做的不同的事情可能会触发其他行为。请记住,拥有一个“drawable”文件夹和一个“
drawable mdpi
”文件夹有点奇怪,因为默认情况下,drawable文件夹是mdpi
密度。这两者中的哪一个将被使用可能并不确定。我知道使用密度说明符会在现代构建工具中自动附加-v4,以解决Android 1.5无法理解和正确处理这些说明符的问题,因此与drawable相比,drawable-mdpi-v4
可能会被认为具有更多说明符,并且优先匹配。不过,这两个文件夹都有一个mdpi
密度等级,因此请记住,如果从其中一个文件夹使用,您的可绘制文件夹将自动放大。为什么要将图像文件放入可绘制文件夹
根据我在互联网上读到的提示,你不应该把图像文件放在可绘制文件夹中
在drawable文件夹中,只放置xml类型的drawable
如果要放置图像文件,请将其放置在以下任何文件夹中(或为其添加其他限定符,或使用其他限定符):
- 可绘制的nodpi(仅适用于您不知道其大小的图像)
- 可拉伸低密度聚乙烯
- 可拉伸mdpi
- 可拉伸hdpi
- 可拉伸xhdpi
- 可拉伸tvdpi
这里有一个解释的链接。您尝试过可绘制的nodpi文件夹吗?没有帮助,但我很好奇。你确定图像只在这个文件夹中吗?因为如果它可以在其他文件夹中找到,那么你无法确定Android会首先在
drawable/
文件夹中查找。它可以先在其他dpi文件夹中查找。因此,如果您有一个(空的?)图像,那么它可能会被渲染。您不应该在res/drawable/
中有光栅图像。该目录用于XML可绘制文件,即没有内在“密度”的文件。@sandalone:“应该保留哪些分辨率?”——理想情况下,没有。正如我所写的,该目录用于XML可绘制文件,这些文件没有内在的“密度”。如果你把位图放在那里,它们显然会被视为-mdpi
,可能是为了向后兼容。但是,为了长期的可维护性,您应该将-mdpi
位图放在res/drawable mdpi/
中,这样就不会产生混淆。@sandleone:XML drawable要么是矢量艺术(ShapeDrawable
),要么是有效的,如果/开关语句(例如,LevelListDrawable
)。它们的行为都不会因密度而有所不同。XML drawable可以安全地放入res/drawable/
。位图图像应该只在目录中指定Android应该考虑那些图像的密度,如<代码> RES/可绘制的MPDI/<代码>。尝试将此图像添加为<代码> RealValayOut的背景,看看会发生什么。谢谢!!!谢谢,我想这对我解释了很多。我读了太多的文档,却不知怎么地错过了res/drawable
的真正用途。是的,有很多类型的drawable,很多我都不知道。无论如何,请尝试将每个文件放入正确的文件夹中。
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