我是否正确理解这一点:
所有Android设备都属于这4个密度桶中的一个:ldpi,mdpi,hdpi,xhdpi .
因此,如果为密度中的每一个提供了可绘制资源(每个文件夹中都存在drawable或同名),则无需在/ res / drawable中提供具有相同名称的drawable或/ RES /抽拉-nodpi .
我的调整是否正确?
那么,为什么在/ res / drawable中提供相同的资源是有意义的唯一原因是,为了使应用程序更具有前瞻性,以防为Android OS定义新的密度存储桶?
3 回答
通过这一段,你或多或少是正确的 . 你的下一段有点“脱轨”:
并不是的 .
您将资源放在
res/drawable/
中,这些资源具有内在可扩展性(例如,ShapeDrawable
) . 您将资源放在res/drawable-nodpi/
中,由于某种原因,您不希望缩放以匹配设备密度 .如果Android发明了一个新的密度存储桶(例如,对于超高密度的400dpi,则为
-uhdpi
),如果您跳过密度存储桶,Android可能会执行今天的工作:扩展其他版本之一 . 例如,如果您有-xhdpi
并且没有-hdpi
,则Android会对-xhdpi
图像进行下采样,以便在-hdpi
设备上使用 .这是正确的,只要你在所有4个密度桶中都有抽屉就可以了 . 一种常见的做法是在/ res / drawable中制作一个自定义绘图,它指的是您的密度跨越drawables .
例如,您可能需要一个按下和未按下状态的按钮 . 首先,您将为按下和未按下的按钮包含每个密度的可绘制对象 . 然后你可以在/ res / drawables中创建以下button_black_selector.xml:
如果为所有四个密度添加了资源,那么您必须将drawable添加到文件夹
/res/drawable
. 但是,您已经猜对了,如果出现新的限定符,最好在默认文件夹中包含一些内容 . 因此,我建议不要将mdpi资源放在/res/drawable-mdpi
文件夹中,而是放在默认文件夹中(/res/drawable/
) . 对于各种资源来说,这是一种很好的做法 .至于
/res/drawable-nodpi
文件夹,它是一个特殊的文件夹,因为它应该包含不像其他所有限定符那样自动缩放的资源 . 因此,您通常单独使用/res/drawable-nodpi
文件夹,或者根本不使用它 .