8

我正在开发一个应用程序,并且我已经提供了从 ldpi 到 xhdpi 的所有资源,但是有些平板电脑使用 hdpi(或者在我正在测试的 nexus 7 的情况下使用 tvdpi)所以当我在平板电脑上打开应用程序时一切都很小,我想强迫他们使用 xhdpi 资源我该怎么做?

我不想仅为平板电脑创建单独的文件,否则应用程序的大小会增加,xhdpi 资源可以正常工作

在此处输入图像描述

在手机上一切都正常显示,平板电脑是问题,因为它们的大屏幕采用小分辨率资产,因此以英寸为单位的实际尺寸(4cm,用尺子测量)是正确的,但它们实际上看起来很小,使得整体设计不正确

4

1 回答 1

5

通常,缩小是最好的选择(与放大相反)。如果您的图像在缩小时没有降级或丢失信息,请将图像的 2x 版本放在res/drawable -xhdpi文件夹中。Android 将在低密度设备上适当缩小这些图像。

例如,如果您将 64x64 像素的 jpg/png 放入res/drawable-xhdpi,Android 将在 mdpi 设备上显示为 32x32 像素,在 hdpi 设备上显示为 48x48 像素图像,在 xhdpi 设备上显示为 64x64 像素图像。

如果缩小图像会使它们恶化(例如,图像中有 1 像素线会在缩小时消失),那么唯一的选择是在 drawable-mdpi、drawable-hdpi 等中添加图像的变体。目录。

评论后更新:

你想让你的图像在更大的屏幕上显示得更大(而不是在更高密度的屏幕上)。您可以通过仍然将图像仅放在 drawable-xhdpi 文件夹中来做到这一点,然后执行以下操作:

例如,您将在 res/layout 中使用显示您的图像之一的 ImageView 的此布局:

res/drawable-xhdpi/one_of_my_images.png

资源/布局/somelayout.xml

....
<ImageView 
    android:layout_height="@dimen/image_height"
    android:layout_width="@dimen/image_width"
    android:src="@drawable/one_of_my_images"
    android:scaleType="fitCenter"
    ....
    />

res/values/dimens.xml

....
<dimen name="image_height">100dip</dimen>
<dimen name="image_width">150dip</dimen>
....

res/values-large/dimens.xml

....
<dimen name="image_height">150dip</dimen>
<dimen name="image_width">225dip</dimen>
....

res/values-xlarge/dimens.xml

....
<dimen name="image_height">200dip</dimen>
<dimen name="image_width">300dip</dimen>
....

如您所见,屏幕越大,图像越大(以倾角为单位,因此以英寸为单位)。您可以在 res/values-xlarge-hdpi、res/values-xlarge-xhdpi 等中的 dimens.xml 中尝试不同的 image_height 和 image_width 值,看看哪个看起来最好。

评论后更新 2: 如果您想要自己的“自定义”方案来加载适当的资源,请将它们放入 id res/drawable-nodpi:例如
res/drawable-nodpi/one_of_my_images_normal.png res/drawable-nodpi/one_of_my_images_large.png res/ drawable-nodpi/one_of_my_images_xlarge.png

然后放入适当的可绘制目录(res/drawable/、res/drawable-large、/res/drawable-sw360dp/ 等,无论你能想到什么)一个 xml 文件,该文件间接引用来自 nodpi 目录的正确资源:例如

res/drawable-xlarge-mdpi/my_images.xml

<resources>
    ....
    <item type="drawable" name="one_of_my_images">@drawable/one_of_my_images_large</item>
    ....
</resources>

这意味着对于超大 mdpi 屏幕,Android 将从 drawable-nodpi 目录加载“one_of_my_image_large.png”。

于 2013-02-25T20:16:44.050 回答