I need to clarify some doubt about the image assets for my app,
if I specify in an xml file that the height of something [image view] is 50 dip height
which type of screen should i choose from the resources folder?
drawable, hdpi, ldpi, mdpi, xhdpi,
to have the 50 px height image,
and what is the percentage for bigger, smaller size images compared to the base image,
like in iOS, @2x, is literally 2 times the size of the image, and you say programatically the normal size,
thanks!
mdpi
is the reference density -- that is, 1 px on an mdpi
display is equal to 1 dip. The ratio for asset scaling is:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4
Although you don't really need to worry about tvdpi
unless you're developing specifically for Google TV or the original Nexus 7 -- but even Google recommends simply using hdpi
assets.
What this means is if you're doing a 48dip image and plan to support up to xxhdpi resolution
, you should start with a 144px image (192px if you want native assets for xxxhdpi) and make the following images for the densities:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
36 x 36 | 48 x 48 | 64 x 64 | 72 x 72 | 96 x 96 | 144 x 144 | 192 x 192
And these should display at roughly the same size on any device, provided you've placed these in density-specific folders (e.g. drawable-xhdpi
, drawable-hdpi
, etc.)
For reference, the pixel densities for these are:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
120 | 160 | 213 | 240 | 320 | 480 | 640