繁体   English   中英

Android可绘制资源问题

[英]Android drawable resources issue

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

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

三星Galaxy Tab 1280x800 mdpi选择了drawable-sw720dp-hdpi而不是drawable-sw720dp-mdpi

与其他设备相同。 如果有资源drawable-sw320dp-hdpidrawable-sw320dp-xhdpi索尼爱立信xperia-ARC 854x480 hdpi会选择drawable-sw320dp-xhdpi

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

有任何想法吗?

前段时间我有类似的问题,同时编写使用画布和位图的动画壁纸。 我无法使用默认布局文件夹实现我想要的效果。

在我的情况下,例如,具有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);
}

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

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

问题在于可绘制文件夹的swxxxdp限定符。 如果我删除屏幕宽度并仅使用一组所有密度的图像,问题似乎得到解决。 但是,我希望为7英寸和10英寸设备提供不同的抽屉。 我所做的是为10英寸图像和7英寸图像使用一组不同的名称,并使用sw600dp和sw720dp限定符使用2组不同的布局。 这是我目前的结构,运作良好。 然而,这不是使用资源的预期方式,因为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM