I would like to create a background image for different resolutions in Android. So I need the values (in pixel) for ldpi, mdpi, hdpi,xhdpi and xxhdpi. It is important that the image will not be blurred.

I have already read the Documentation about multiple screen support but there are sizes in dp instead of pixel.

Solution 1

Try follow below android icon graphy size reference for various device screen resolutin.

                            ldpi     mdpi     hdpi     xhdpi    xxhdpi     xxxhdpi
Launcher And Home           36*36    48*48   72*72    96*96    144*144    192*192
Action Bar And Tab          24*24    32*32   48*48    64*64    96*96      128*128
Notification                18*18    24*24   36*36    48*48    72*72      96*96
Background                  320*426  320*470 480*640  720*1280 1080*1920  1440*2560

Solution 2

there is no full list of screen resolutions, there are no fixed values in pixels for ldpi, mdpi, hdpi,xhdpi and xxhdpi. Every android device may have different resolution. If you want to fill all resolutions you will have to create too many images. If you put them in your app, it will make the app size huge. Maybe a better approach is to use composite image for background.

Solution 3

According to android documentation

mdpi is baseLine size

we can use it to measure all other scales , that mean if mdpi (scale 1) equal 1 xhdpi (scale 2) should equal 2 , multiplay mdpi sizes in scale value

all sizes width x height in pixel

xxxhdpi: 1280x1920 px  // 4x
xxhdpi : 960x1440 px   // 3x
xhdpi  : 640x960 px    // 2x
hdpi   : 480x800 px    // 1.5 x at least 480x720  
mdpi   : 320x480 px    // baseline = 1x
ldpi   : 240x360 px    // .75 x

** notice I add xxhdpi with 3.0x scale to image*

Solution 4

  • xhdpi: 640x960 px
  • hdpi: 480x800 px
  • mdpi: 320x480 px
  • ldpi: 240x320 px

Solution 5

i think it is rather easy to convert the DP into pixels in andorid java i am achieving this with this function that i created

int getPixels(Context context, float dp) {
    return (int) (context.getResources().getDisplayMetrics().density * dp + .5f);

hopefully this is helpful for people, and kindly do share your views on it, as i would like to get this conversion as accurate as possible, thankyou