我需要在我的应用程序中使用的每个图标有4种不同的大小。问题是我的Nexus 7 (1280 x 800)和galaxy s2 (800 x 480)似乎使用draw_hdpi中的资源。我如何强制Nexus使用draw_xhdpi中的资源,然后强制10英寸选项卡使用draw_xxhdpi。
在我的manifest文件
<supports-screens android:resizeable="true"
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />
我如何强制Nexus使用draw_xhdpi中的资源,然后10英寸TAB使用draw_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限定符可以改变。(根据我自己的经验,首先在7英寸设备上放一个文件夹drawable-large-mdpi
,然后在Nexus 7上检查一下。如果图片没有问题,你不需要再放一个文件夹。因为如果一个特定的文件夹不存在,Android将检查最近的可能文件夹,并为设备屏幕优化它)
现在关于10英寸平板电脑的情况,它们是xlarge
设备,它们的密度可以从mdpi
变化到xhdpi
(Nexus 10)。但很多都是mdpi
器件,分辨率1280 * 800。
更好的做法是把下面的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
尝试使用Configuration qualifiers
作为您的资源。这是最佳实践。如res/drawable-normal-hdpi-port/icon.png
.
Ref Link: Configuration qualifiers
谢谢。
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
设备它会从hdpi中获取可绘制的资源如果你在samsung
tab 2
中进行测试它会从mdpi
中获取相同的可绘制资源因为它是mdpi设备