设置可绘制文件夹以用于不同的分辨率

时间:2013-04-18 09:44:46

标签: android android-manifest android-drawable android-screen-support android-screen

对于我需要在我的应用中使用的每个图标,我有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" />

3 个答案:

答案 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一样。

参考链接:Configuration qualifiers

感谢。