Default drawable folder in android - android

Ok so I have 4 folders in my res directory: drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxhdpi. I wanted to know how to make a DEFAULT drawable folder where I could place images and if there was no image found in the specific density folders, the android device would look in the defualt one. So I created one with no qualifiers named drawable. The problem is when I put an image in my new created folder, it appeared differently than when I placed it in a specific density drawable folder.. Even though I was using the exact same image. How did changing folders affect my image..?

The default drawable folder will be interpreted as mdpi, essentially. So any image you put in there will be rendered 1:1 on an mdpi device, scaled to 1.5x on hdpi, and scaled to 2x on xhdpi, etc.

All those folders are related to the phone you are using, you can open a default drawable folder named "drawable" but if you want to know, the drawable-mdpi for example is for samsung galaxy tab 10" (and more), you can read more here: http://developer.android.com/guide/practices/screens_support.html

Related

Do we still need drawable folder in Android Resources if already have drawable - hpi, mdpi, xhdpi,xxhdpi, xxxhdpi

What size of image should I put into drawable folder which is not drawable - ldpi, hpi, mdpi, xhdpi,xxhdpi, xxxhdpi? Or do I still need the drawable folder?
Yes, we still need drawable folder. All the folders you mentioned help android app to store different density images according to their density but when you access them into your app system will select the appropriate image based on the screen's API.
You could also follow documentation for further details here.

Android: Same Image needs to be added in all drawable folders?

I am directly adding images in drawable folders and it is coming fine with ImageView tag android:src="#drawable/image_name" but I wonder what to do with the other drawable folders as shown below.
Do I need to add same image in all drawable folders or my way of adding images in drawable folders is wrong?
Please help me!
The image is same, but the size should be different for each folders.
If you add the image only in drawable folder, same image will be loaded for all screen resolutions. So for eg: if the image size is small, this may result in bad image quality.
You can find a similar question here
I use Android studio plugin Android Drawable Importer
All these drawable folders represent different android phone densities. The best folder to put your images is drawable-xxhdpi as android automatically downscale or upscale the images depending on your devices density and most phones these days are on xxhdpi density.
If you put a image in drawable folder only there are chances that image may get distorted(as it upscales) in xxxhdpi density.
If you are putting images in xxhdpi ,make sure you create your images acc. to xxhdpi resolution.
If you don't feel the image is looking right in some phones than check the density of that phone and put an image in that specific density folder acc. to it's size(reduced or increased).
Just put it in the drawable folder, no need to put it in other drawable-... folders because those folders and contents inside are created automatically by android studio.

Is it recommend NOT to put images in drawable folder?

I found this link Why don't some xhdpi mobiles display image located in /res/drawable only? and according to the answer "you should not put images files in the drawable folder". Is it true? there is a link in that answer but does anyone have an official reference on this matter. I search for an answer but still did't find any. Please help me to understand the drawable folder.
"you should not put images files in the drawable folder". Is it true?
It is not true, as long as you remember the fact the drawable is a shortcut for drawable-mdpi, so your drawable as in fact been scaled density-wise.
Drawable folder is meant to hold images.
There are many drawable folder with customization, like
drawable-mdpi : devices which fall under medium density will take images from this folder.
drawable-mdpi-port : devices which fall under medium density and the orientation is portrait will take images from this folder.
Priority matters. Suppose the device is medium density and not in portrait mode, then it will take in drawable-mdpi.
The default folder is drawable, this folder will be in use under the following situations.
If the device doesn't fall under the specified customization.
If the item image is common for all density and resolutions.

Android: How to change which resource folder to choose for specific dimension or density device?

My problem is that I have to put identical copy of drawables for both drawable-mdpi and drawable-tvdpi.
Target devices density are tvdpi and xhdpi.
I want that device(xhdpi) fatch drawable resources from drawable-mdpi rather then drawable-tvdpi. For this what I need to do? And how? May be by custom build file it can be solved, but don't know how to do that?
Any time you reference #drawable/image, the system selects the appropriate bitmap based on the screen's density.
res/
drawable-xhdpi/
image.png
drawable-tvdpi/
image.png
So you need not do anything for the device to fetch the appropriate drawable resources .
Only thing is to add the image properly in the folder with standard pixel size .

Storing different density drawables in the folder

I have 2 doubts regarding storing the drawables in respective folders ie.. ldpi, mdpi..Which I couldn't find an answer anywhere.
I have folders like this:
Since I have all the possible folder names ie.., ldpi, mdpi, hdpi, xhdpi, xxhdpi should I delete the default drawable folder?
Or Should I move all the files from drawable-mdpi to the default drawable folder and delete the drawable-mdpi folder?
I am using few xml files as drawables, which are selectors, custom backgrounds etc.. Which contain the image references like
<item android:drawable="#drawable/ic_vote_clicked" android:state_pressed="true"/>
<item android:drawable="#drawable/ic_vote_clicked" android:state_focused="true"/>
<item android:drawable="#drawable/ic_vote"/>
Where should I place these xml files? In every folder? Or the default drawable folder?
Anyways the pngs like #drawable/ic_vote are in every folder.
Anything that is not DPI related should go in the drawables folder.
Anything else that is dpi related, should be in the relevant DPI folder.
There is no reason to delete any of the folders.
So your xml files should be in the drawable folder.
Also, it doesnt matter what folder they are in, you still reference them with #drawable/ and it finds the right one.
Android first checks for the resource in the corresponding density specific folder, example: ic_launcher.png for a medium density screen will first be searched in the drawable-mdpi folder. If found, well and good. In case, the image doesn't exist there, android picks from the drawable folder, the default.
hence, to have image resources specific to density, keep them in respective folders and a copy in the drawable folder as well [only for the safe side].
For the xml resources, keep them in the drawable folder only.
Hope that helps.
I created five folders for drawable i.e. ldpi, mdpi, hdpi, xhdpi and xxhdpi. Also for layout i created three folder i.e layout, layout-large and layout-xlarge.
My project requirement was Multiple Device Support. It worked well on all the devices.
Issue was with 10 inch and 7 inch tab. To solve this issue i created layout-large and layout-xlarge folders and place the respective files in respective folders. And now everything is working fine.
So its highly recommended that you create respective folder. Don't move everything to drawable or layout folder.
Put the xml files in default drawable folder. Don't change others.
You shound't delete any of this folders.
Drawable-density folders are using in all element which you want to add i.e. png files. In drawable folder you can add universal graphics, specified i.e. using XML structure (selectors etc.)

Categories

Resources