4

我注意到真实设备从预览中显示的 Eclipse 中获取了不同的资源。例如,我为最小宽度为 720dp 的设备创建了可绘制资源

  • drawable-sw720dp-mdpi适用于三星 Galaxy Tab 1280x800 mdpi
  • drawable-sw720dp-hdpi适用于 Nexus 10 2560x1600 hdpi。

三星 Galaxy Tab 1280x800 mdpi选择drawable-sw720dp-hdpidrawable-sw720dp-mdpi?

与其他设备相同。如果有资源drawable-sw320dp-hdpiSony Ericsson xperia-ARC 854x480 hdpi能用drawable-sw320dp-xhdpi吗?drawable-sw320dp-xhdpi

我不能只保留drawable-hdpi资源,因为有 5'5 英寸屏幕尺寸的设备。例如 samsung Galaxy 1280x720 hdpi 5'5 英寸,并且对于此类设备有不同的图形设计,因此设备 854x480 hdpi 和 1280x720 hdpi 将使用相同的目录drawable-hdpi wich是不可接受的。

有任何想法吗?

4

2 回答 2

0

前段时间我在使用画布和位图编写动画壁纸时遇到了类似的问题。我无法使用默认布局文件夹实现我想要的。

例如,在我的情况下,具有 xlarge 屏幕 (1280x800) 的中密度设备应该使用与具有普通屏幕 (600x1024) 的高密度设备相同的资源。

我决定编写自己的解决方案,将资源分为三组并使用自定义规则选择它们。

DisplayMetrics metrics = resources.getDisplayMetrics();
int screenSize = resources.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;

switch (metrics.densityDpi) {
case DisplayMetrics.DENSITY_LOW:
    if (screenSize == Configuration.SCREENLAYOUT_SIZE_SMALL || screenSize == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
        return new SmallResourceProvider(resources);
    }
case DisplayMetrics.DENSITY_MEDIUM:
    if (screenSize == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
        return new MediumResourceProvider(resources);
    }
default:
    return new LargeResourceProvider(resources);
}

也许这对您的情况会有所帮助。

于 2013-07-12T10:42:41.020 回答
0

我也面临着同样奇怪的问题。在我的情况下,Galaxy tab GT P7500 正在从 drawable-sw720dp-XXHDPI 文件夹中挑选图像,因为我也有 XXHDPI 文件夹。如果我删除了 XXHDPI,它会选择下一个较低的 XHDPI 文件夹。

问题在于可绘制文件夹的 swxxxdp 限定符。如果我删除屏幕宽度并只使用一组所有密度的图像,问题似乎就解决了。但是,我想为 7 英寸和 10 英寸设备提供不同的绘图集。我所做的是为 10 英寸图像和 7 英寸图像使用一组不同的名称,并使用 2 组不同的布局与 sw600dp 和 sw720dp 限定符。这是我目前运作良好的结构。然而,这不是使用资源的预期方式,因为 android 建议将 drawables 外部化。不幸的是,我找不到更好的解决方案。

layout-land
layout-sw600dp-land (uses image.png)
layout-sw720dp-land (image_large.png)

对于drawables,

drawble-mdpi (image.png & image_large.png)
drawable-hdpi 
drawable-xhdpi
drawable-xxhdpi
于 2013-12-04T05:57:48.917 回答