我注意到真实设备从预览中的eclipse中获取了不同的资源。 例如,我为最小宽度为720dp的设备创建了可绘制资源
drawable-sw720dp-mdpi
用于三星Galaxy Tab 1280x800 mdpi drawable-sw720dp-hdpi
适用于Nexus 10 2560x1600 hdpi。但三星Galaxy Tab 1280x800 mdpi 会选择drawable-sw720dp-hdpi
而不是drawable-sw720dp-mdpi
?
与其他设备相同。如果有资源drawable-sw320dp-hdpi
,drawable-sw320dp-xhdpi
,索尼爱立信xperia-ARC 854x480 hdpi 会选择drawable-sw320dp-xhdpi
?
我无法保留drawable-hdpi
资源,因为屏幕尺寸为5英寸5英寸。例如三星galaxy 1280x720 hdpi 5'5英寸,并且对于这样的设备有不同的图形设计,因此两个设备854x480 hdpi和1280x720 hdpi将使用相同的目录drawable-hdpi wich
是不可接受的。
有什么想法吗?
答案 0 :(得分: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);
}
也许这会对你的情况有所帮助。
答案 1 :(得分:0)
我也面临同样的奇怪问题。在我的情况下,Galaxy选项卡GT P7500从drawable-sw720dp-XXHDPI文件夹中选取图像,因为我也有XXHDPI文件夹。如果我删除了XXHDPI,它会选择下一个较低的XHDPI文件夹。
问题在于可绘制文件夹的swxxxdp限定符。如果我删除屏幕宽度并仅使用一组所有密度的图像,问题似乎得到解决。但是,我希望为7英寸和10英寸设备提供不同的抽屉。我所做的是为10英寸图像和7英寸图像使用一组不同的名称,并使用sw600dp和sw720dp限定符使用2组不同的布局。 这是我目前的结构,运作良好。然而,这不是预期的使用资源的方式,因为android推荐externalizing the 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