Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么不';某些xhdpi手机是否仅显示位于/res/drawable中的图像?_Java_Android_Android Layout_Htc Android - Fatal编程技术网

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
放入drawable文件夹的图像被视为默认图像,即mdpi。因此,如果您想将文件保持在相同的屏幕密度类别中,请将其放入drawable mdpi文件夹中

不将图像放入drawable文件夹的另一个原因是android会自动将某些设备(如三星galaxy s)的文件转换为16位图像,这在某些情况下会使图像看起来很糟糕


这里有一个解释的链接。

您尝试过可绘制的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