Will a density qualified drawable folder or drawable-nodpi take precedence?

android, android-resources

Solution

I'm not sure what the precedence is for `nodpi`, but that should never be a problem. It sounds like you are misunderstanding the `nodpi` qualifier. You should not use `nodpi` as a fallback for assets that you don't provide at the device's density bucket. The correct fallback is a folder with no density qualifier (e.g. `drawable/`).

If the system cannot find an asset at the device's density (e.g. it is an ldpi device and you don't have a `drawable-ldpi` folder), it will fall back to a folder without a density qualifier, *not the `nodpi` qualifier`.

The `nodpi` qualifier is used when you want to specify a resource that will be used for all densities and that you do not want Android to scale. Assets in the other density folders (e.g. `drawable-xhdpi`) will be scaled to the actual screen size. If you use the `nodpi` qualifier, you should not provide that asset in any other resource folders.

It is also important to note that with screen density qualifiers, Android will also prefer to use a lower density asset over an unqualified resource. If you have an xhdpi device, but you only have a `drawable` and a `drawable-mdpi` folder, Android will check for the asset in the mdpi folder before the unqualified folder.

Problem

If I define drawables for a `density qualified folder` (eg drawable-hdpi), and also drawables to fall back on in `drawable-nodpi`, will a `high density device` use the `-hdpi` over the `-nodpi`? What about if I take it a step further and also have the same setup for `-land` folders.

Original source