Which resource qualifier should I use to support 1080p, 720p android TV? - Android
There are three screen densities that can be considered for Android TV, and three corresponding qualifiers. These include:
- tvdpi - (213dpi) - intended for 720p televisions;
- xhdpi - (320dpi) - intended for 1080p (HD) televisions;
- xxxhdpi - (640dpi) - intended for 4k (Ultra HD) televisions.
But according to https://developer.android.com/training/tv/start/layouts.html#density-resources:
Your TV layout should target a screen size of 1920 x 1080 pixels [standard 1080p/HD], and then allow the Android system to downscale your layout elements to 720p if necessary.
This implies that, if you follow this advice and always design to a 1080p specs, you could use the -television
UI Mode Qualifier and be done with it.
If you need to deliver different images and layouts for the different TV sizes, though, you can use the screen density qualifiers above.
The “standard” images and layouts for TV could be stored in a -xhdpi
folder, as xhdpi
is the qualifier used for 1080p TVs.
If (optional) high-resolution versions of images are desired for 4k TVs, they can be supplied as “2x” images, and stored in a drawable-xxxhdpi
folder. Similarly, dimensions/layouts intended to only target 4k TVs could be placed in -xxxhdpi
.
(Note in particular that the -tvdpi
qualifier is specific to 720p, and is almost certainly not what you want to use to support modern TVs.)
The documentation is sparse and slightly contradictory, but I base this primarily on these sources:
https://developer.android.com/guide/practices/screens_support.html https://stackoverflow.com/a/11581786/925478
First of all, you are substantially correct. You can use
sw360dp/ : 720p screens
sw540dp/ : 1080p screens
The reason why sw720p/sw1080p
don't work is because they don't exist as qualifiers.
This is the official documentation about working with different screen sizes. As you can read, there are two different units to take into account if you want to calculate your dp
folder: the pixel count (e.g., 720) and the pixel density (that is, the dot-per-inch unit, or how many pixels fit into a single inch).
The formula is pretty simple:
px = dp * (dpi / 160)
while in this case we have:
dp = px * 160 / dpi
Of course, a TV can have different densities: this table tells you more about it (source: official documentation).
Let's assume we have a 1080p display with an extra high density (@320 dpi). We do the math
dp = 1080 * 160 / 320 = 540
So we get the appropriate folder to put your resources in.
EDIT: on that same page, it is stated that there is a specific tvdpi
qualifier that you can use for your TV-related resources (around 213 dpi
).