如果为ldpi,mdpi,hdpi,xhdpi提供可绘制的资源,这个drawable不需要提供nodpi吗?

我是否正确理解这一点:

所有的Android设备都属于这四个密度桶之一:ldpi,mdpi,hdpi,xhdpi。

因此,如果为这些密度中的每一个提供可绘制资源(在这些文件夹中的每个文件夹中都存在可绘制的或相同的名称),则不必在/ res / drawable中提供具有相同名称的绘图或/ RES /抽拉-nodpi。

我的说法正确吗?

所以,如果在Android OS中定义一个新的密度桶,那么为什么在/ res / drawable中提供相同的资源是为了使应用程序更具前瞻性?

Solutions Collecting From Web of "如果为ldpi,mdpi,hdpi,xhdpi提供可绘制的资源,这个drawable不需要提供nodpi吗?"

我的说法正确吗?

通过这一段,你或多或less是正确的。 你的下一段话会让你有点“脱轨”:

所以,如果在Android OS中定义一个新的密度桶,那么为什么在/ res / drawable中提供相同的资源是为了使应用程序更具前瞻性?

不是真的。

你把资源放在res/drawable/内在的可扩展的(例如ShapeDrawable )。 您将资源放在res/drawable-nodpi/中,出于某种原因,您不希望按比例调整设备密度。

如果Android发明了一个新的密度桶(例如,超高密度为400dpi的-uhdpi ),那么如果你跳过一个密度桶,Android可能会做今天的工作:扩展你的其他版本。 例如,如果您有-xhdpi并且没有-hdpi ,则Android会-xhdpi图像以便在-hdpi设备上使用。

这是正确的,只要你可以绘制所有4个密度桶你被覆盖。 一个常见的做法是在/ res / drawable中绘制一个自定义的drawable,这个drawable是指你的密度跨度可绘制的。

例如,你可能想要一个不同状态的button来按下和不按下button。 首先,你将包括一个可压缩和未压缩button的每个密度。 然后,您可以在/ res / drawables中创build以下button_black_selector.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@drawable/button_black"/> <item android:state_pressed="true" android:drawable="@drawable/button_black_selected" /> </selector> 

如果您的资源添加了所有四种密度,那么您就没有必要将drawable添加到文件夹/res/drawable 。 但是,如果出现新的限定符,则您已经正确猜测,最好在默认文件夹中包含某些内容。 因此,我build议将mdpi资源不放在/res/drawable-mdpi文件夹,而是放在默认文件夹( /res/drawable/ )中。 对于各种资源来说这是一个很好的做法。

至于/res/drawable-nodpi文件夹,它是一个特殊的文件夹,因为它应该包含不像所有其他限定符那样自动缩放的资源。 因此,您通常要么单独使用/res/drawable-nodpi文件夹,要么根本不使用它。