对于我需要在我的应用中使用的每个图标,我有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" />
答案 0 :(得分:102)
如何强制Nexus在drawable-xhdpi中使用资源然后 10英寸的标签使用drawable-xxhdpi?
你不能。
限定符hdpi,xhdpi,xxhdpi
描述设备的屏幕密度,而不是屏幕的大小。
来自official doc
屏幕密度
屏幕物理区域内的像素数量;平时 称为dpi(每英寸点数)。例如,“低”密度 与a相比,屏幕在给定物理区域内的像素更少 “正常”或“高”密度屏幕。为简单起见,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限定符可以改变。 (根据我自己的经验,首先为7英寸设备放置一个drawable-large-mdpi
文件夹并在Nexus 7上查看。如果图像没有问题,则不必放入另一个文件夹。因为如果没有特定文件夹,Android将检查最近的可能文件夹,并针对设备屏幕进行优化)
现在关于10英寸平板电脑的情况,它们是xlarge
设备,它们的密度可以从mdpi
更改为xhdpi
(Nexus 10)。但许多人的分辨率 1280 * 800 ,而且他们是mdpi
设备。
更好的做法是放置以下drawables
// 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
答案 1 :(得分: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 7
这样的设备有240dpi
这是hdpi
设备,如果你在samsung
{{ 1}}它将从tab 2
获取相同的drawable,因为它是一个mdpi设备
答案 2 :(得分:1)
尝试使用Configuration qualifiers
作为资源。这是最佳做法。与res/drawable-normal-hdpi-port/icon.png
一样。
感谢。