S.A.Parkhid
S.A.Parkhid

Reputation: 2870

Android image drawable for various resolutions

For using images in my android application, I will use this technique :

I put all of my images into "drawable-xhdpi" folder to let the application scale the images down for various resolutions.

I wondering does it make sense ? What is your experiences ?

Thanks for sharing...

UPDATE:

Maybe this method is a nice one, But an another question raises here which is :

Does this technique causes a memory leak for ldpi devices? I don't want to solve the problem by using svg images, Suppose there are bit-mapped images which are not vector based and there is no choice or alternative to replace. using a bitmap is the only choice.however using this method has a cons which will affect the overall layout and in some devices the position of relevant controls will be changed.

Upvotes: 0

Views: 1531

Answers (3)

from56
from56

Reputation: 4137

I use inkscape to create svg drawings and also to convert to png I think the conversion has better quality and supports all svg functions.

With inkscape and a script it is possible to do batch conversion, I have not tried it yet, until now I convert them one by one

Upvotes: 0

mtrakal
mtrakal

Reputation: 6427

Best way is use SVG files instead of PNG and import them to project in Androis studio: File -> New -> Vector Asset or use icon fonts like https://github.com/mikepenz/Android-Iconics

SVG file is inserted to drawable and converted to PNG files while compile time for back compatibility, but you don't need to maintain a pack of files, but just one vector file.

Upvotes: 1

David Rawson
David Rawson

Reputation: 21497

While this will work, it's not ideal and not recommended. Please look at the official documentation for Supporting Multiple Screens:

Although the system performs scaling and resizing to make your application work on different screens, you should make the effort to optimize your application for different screen sizes and densities. In doing so, you maximize the user experience for all devices and your users believe that your application was actually designed for their devices—rather than simply stretched to fit the screen on their devices.

And:

Provide different bitmap drawables for different screen densities By default, Android scales your bitmap drawables (.png, .jpg, and .gif files) and Nine-Patch drawables (.9.png files) so that they render at the appropriate physical size on each device. For example, if your application provides bitmap drawables only for the baseline, medium screen density (mdpi), then the system scales them up when on a high-density screen, and scales them down when on a low-density screen. This scaling can cause artifacts in the bitmaps. To ensure your bitmaps look their best, you should include alternative versions at different resolutions for different screen densities.

You can use the File / New / Image Asset to automatically generate the scaled assets.

Upvotes: 2

Related Questions