[英]Android drawable resources issue
我注意到真实设备从预览中的eclipse中获取了不同的资源。 例如,我为最小宽度为720dp的设备创建了可绘制资源
drawable-sw720dp-mdpi
于三星Galaxy Tab 1280x800 mdpi的drawable-sw720dp-mdpi
mdpi drawable-sw720dp-hdpi
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英寸屏幕尺寸的设备。 例如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.