25

对于我需要在我的应用程序中使用的每个图标,我有 4 种不同的尺寸。问题是 My Nexus 7 (1280 x 800) 和 Galaxy s2 (800 x 480) 似乎使用了 drawable-hdpi 中的资源。如何强制 Nexus 使用 drawable-xhdpi 中的资源,然后使用 10 英寸选项卡使用 drawable-xxhdpi。

我的清单文件中有这个

<supports-screens android:resizeable="true"
              android:smallScreens="true"
              android:normalScreens="true"
              android:largeScreens="true"
              android:xlargeScreens="true"
              android:anyDensity="true" />
4

3 回答 3

103

如何强制 Nexus 使用 drawable-xhdpi 中的资源,然后使用 10 英寸选项卡使用 drawable-xxhdpi?

你不能。

限定符hdpi,xhdpi,xxhdpi描述的是设备的屏幕密度,而不是屏幕的大小。来自官方文档

屏幕密度

屏幕物理区域内的像素数量;通常称为 dpi(每英寸点数)。例如,与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域内的像素较少。为简单起见,Android 将所有实际屏幕密度分为四种广义密度:低、中、高和超高。

如果您还想支持平板电脑,请使用large, xlarge限定符。Nexus 7 是一款large-hdpi平板电脑(技术上它是tvdpi,但从 中获取图像hdpi)。因此,如果您想为 Nexus 7 放置图像,请创建一个名为的文件夹并将drawable-large-hdpi图像放在那里。

注意:这是 Nexus 7 的特殊情况。因为即使 Nexus 7 是 7 英寸平板电脑,它的分辨率也为1280 * 800。所以它是一个hdpi设备。但普通 7 英寸设备的分辨率较低,为1024 * 600。所以它们是mdpi设备。所以drawable限定符可以改变。(根据我自己的经验,首先drawable-large-mdpi为 7 英寸设备放一个文件夹,然后在 Nexus 7 上检查。如果图像没有问题,则不必放另一个文件夹。因为如果特定文件夹不存在,Android 会检查最近的可能文件夹并针对设备屏幕进行优化)

现在关于 10 英寸平板电脑外壳,它们是xlarge设备,它们的密度可以从mdpixhdpi(Nexus 10)。但许多分辨率为1280 * 800,它们是mdpi设备。

更好的做法是放置以下可绘制对象

// for Phones
drawable-ldpi
drawable-mdpi
drawable-hdpi

//for 7 inch tablets
drawable-large-mdpi
drawable-large-hdpi(for Nexus 7)

// for 10 inch tablets
drawable-xlarge-mdpi
于 2013-04-18T10:18:35.367 回答
1
The problem is My Nexus 7 (1280 x 800) and galaxy s2 (800 x 480) seem to use the resources in drawable-hdpi

这取决于像nexus 7has一样240dpihdpi设备,如果您在其中测试相同的设备,它将像这样从 hdpi 获取可绘制资源,因为它是 mdpi 设备samsung tab 2,它将从相同的可绘制资源中获取mdpi

于 2013-04-18T09:56:17.163 回答
1

尝试使用Configuration qualifiers您的资源。这是最佳实践。喜欢res/drawable-normal-hdpi-port/icon.png

参考链接:配置限定符

谢谢。

于 2013-04-18T10:08:16.430 回答