如何在不同的drawable文件夹中排列图片?

4

我知道关于这个问题的讨论无处不在,而且我自己也使用过这些文件夹,但是最近我阅读了它们之后仍然对如何在drawable文件夹中排列图像感到困惑。

看看这个XML文件 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/wallpaper_chapter_selection"
    tools:context="com.greenloop.joindotsandpaint.ChapterSelection">

    <ImageView android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:scaleType="centerInside"
         android:src="@drawable/img2"
         android:padding="20dp" />

<RelativeLayout

让我们考虑两个与此“横向模式”相关的手机 -
Nexus 10 - 2560像素*1600像素 xhdpi
Nexus 5 - 1920像素*1080像素 xxhdpi
在Nexus 10的情况下 - 图像大小将为1600像素(高度) 而在Nexus 5的情况下 - 图像大小将为1080像素
Nexus 10所需的图像大小将大于Nexus 5所需的图像大小,但Nexus 10将从xhdpi文件夹(较小的图像大小)中获取图像,因为它是xhdpi,而Nexus 5将从xxhdpi文件夹中获取图像。
那么我该如何解决这个问题呢?我有很多类似的布局,都遇到了类似的问题。
2个回答

2
drawable-hdpidrawable-xhdpidrawable-xxhdpi等只指定了dpi维度,只要设备具有相同的dpi规格,所有尺寸的设备将从同一文件夹中获取资源。要添加屏幕大小维度,可以添加large(用于7英寸左右的设备)、xlarge(用于10英寸左右的设备)等。例如,您可以拥有一个drawable-xlarge-xhdpi,以强制Nexus 10英寸从此文件夹获取特定资源。或者您只能拥有drawable-xlarge,这样所有10英寸的设备都会从此文件夹中拉取资源,无论其dpi是什么。 基本上,drawable文件夹是通用的,您可以通过drawable-*-*-etc文件夹中的值逐个覆盖。

我还看到开发者创建了 "drawable" 文件夹并将图像放在其中。你可以在你的答案中也提到这个吗? - mubeen
那么我应该如何真正安排图片呢?你能详细说明一下吗?我应该将相同像素但不同ppi的图像放在不同的drawable中,还是应该做些什么?请详细说明一个好的解决方案!提前感谢。 - Abhinav Arora
没有一种适用于所有情况的标准答案。这非常取决于您想要通过每个图像实现什么目标。例如,如果您使用图像并且您的意图是保持其相同的物理大小(比如说用于按钮或图像按钮),那么最好将其放入drawable-**dpi文件夹中。如果您的意图是让它们以不同的尺寸出现(对于更大的屏幕尺寸而言更大),则可能需要将它们至少放入drawable + drawable-**large文件夹中。就我个人而言,我会根据具体情况做出决定。 - N.T.
@mubeen - 我并不是想要一个所有可能文件夹和组合的完整参考,而是想要指出机制。drawable 文件夹是一个特殊情况,我已经更新了我的答案来引用它。 - N.T.

1

请查看“屏幕尺寸”下面的部分:

http://developer.android.com/guide/topics/resources/providing-resources.html

你可以(或者说需要)为不同的屏幕尺寸创建不同的布局。手机和平板电脑会有不同的处理方式。
Nexus 5具有更高的DPI。5英寸上的1080像素与10英寸上的1600像素相比...因此,Nexus 5使用xxhdpi资源(这里是图片!),而Nexus 10则使用xhdpi。(xhdpi并不比xxhdpi“更大”,它只是每英寸像素“更少”)。
手机和平板电脑的布局与屏幕的DPI是两回事。

但是,请看布局。我不需要为不同的屏幕尺寸制作不同的布局。我只希望一张图片能够在整个屏幕上显示出来。而且只有通过这种特定的布局才能实现。 - Abhinav Arora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接