在不丢失对旧设备的支持的情况下,设置可绘制目录以支持新Dell Streak的正确方法是什么?

时间:2011-02-04 22:52:34

标签: android

这似乎是widespread problem

我有以下可绘制目录:

drwxr-xr-x  18 mike  staff   612 Feb  4 17:28 drawable/
drwxr-xr-x  51 mike  staff  1734 Feb  4 17:32 drawable-nodpi/
drwxr-xr-x  44 mike  staff  1496 Feb  4 17:30 drawable-normal-mdpi/

我的xml可绘制资源是可绘制的。我用于大型mdpi(Dell Streak)和normal-hdpi(Droid,Nexus,Incredible等)的资源都是可绘制的nodpi。我为normal-mdpi(像G1这样的旧手机)的资源是drawable-normal-mdpi。

不幸的是,像Droid这样的普通hdpi手机正在从drawable-normal-mdpi而不是drawable-nodpi中提取资源。这可能是因为How Android Finds the Best-matching Resource中的规则。

所以问题是,我如何为像Streak这样的大型mdpi设备以及像Droid这样的普通hdpi设备以及像G1这样的普通mdpi设备提供支持?

最简单的解决方案可能是制作我的大型资源的两个副本,一个用于droid的normal-hdpi,另一个用于用于连胜的大mdpi,但我想避免重复所有这些资源。 / p>

更新

根据Mayra的建议,我可以为每个资源制作一个别名。但是,我有很多资源需要制作别名,这会使维护变成一场噩梦,所以我希望能有另一种解决方案。

5 个答案:

答案 0 :(得分:1)

您可以使用别名资源提供指向资源的指针,而无需复制它。见Alias Resources

答案 1 :(得分:1)

将你的“drawable-nodpi”重命名为“drawable-nodpi-800x480”(nodpi需要在那里,否则它不会工作!)并且将“drawable-normal-mdpi”重命名为“可拉伸-分辨率480x320”。

答案 2 :(得分:0)

您是否尝试将HDPI资源放在drawable文件夹而不是drawable-nodpi

答案 3 :(得分:0)

我问同样的question 2 days before you,最接近解决方案的是使用别名资源(通过Mayra)。我最终编写了一个python脚本来处理这个问题。这是一个非常糟糕的工作,我希望我有足够的决心创建一个更加傻瓜的解决方案。

仅供参考,共享资源属于nodpi文件夹,因此不会被android扩展。

答案 4 :(得分:-1)

请查看本指南:http://developer.android.com/guide/practices/screens_support.html

基本上,您应该将drawables放在drawable-mdpi,drawable-hdpi等中,并将布局文件放在layout-small,layout-medium等目录中。因此,布局应依赖于屏幕尺寸,并且drawables应屏幕密度依赖。