Storing different density drawables in the folder - android

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.)

Related

Android studio does not create drawable folder density wise

I created one project in android studio, android studio didn't create drawable folder density wise as like it used to drawable-hdpi, drawable-mdpi etc. It created mipmap-hdpi, mipmap-mdpi etc.
I read https://stackoverflow.com/a/28065664/2455259 mipmap directory is for launcher icons.
Any other drawable assets you use should be placed in the relevant drawable folders as before.
Then why Android Studio stopped to create drawable folder as like before ? Is it no longer recommended approach to put app resources in drawables ?
It wants you to create them when you need them, you can create one by right clicking on the res folder and then click on add new resource directory, select the drawable as the resource type and then from the list of available qualifiers chose density and then the >> button, then select the density you want.
I think a reason why it was removed is for consistency because density is just one of the many qualifiers you can add to a resource file.
It also makes the folder structure neat, because you might not be using all the drawable folders.
The reason why it created the mipmap-hdpi, mipmap-mdpi folders is because there is already a file in it which is the default launcher icon for a new app, if there was no item in it it would not have created them.
The mipmap folder is used for icons only. The other resources have to be placed in correspond drawables' folders.
It is needed for better icon rendering.

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 .

Default drawable folder in 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

Where should I put a shape drawable in my Android folders?

I have a .xml file representing a shape and 5 drawable-*** folders (for hdpi, ldp, mdpi, xhdpi, xxhdpi).
Since this is a shape, I assume I only need one copy? Should I create a folder called drawable and place it in there? Or do I need one copy of the shape in each of the resolution specific folders?
Yes, you can have a res/drawable folder, i.e. no suffix. It will be used for all resolutions. You can also use the -nodpi suffix, see Supporting Multiple Screens for details.

Where is my drawable folder?

When I go into the res folder for my project I only see the drawable-hdpi, drawable-ldpi, and drawable-mdpi folders. Every tutorial I've read says put the image in the drawable folder. Am I supposed to have one?
It doesn't get created automatically when you create the project like the others. Just create a folder named drawable in the same location as those other folders. You also do this for anim, animator, values-x, raw, menu, and basically any other specialty resource folder that you may need.
If you have a PNG image file you should place it into drawable-ldpi, drawable-mdpi or drawable-hdpi, depending on its resolutions. Ideally you should provide three versions (or four, with xhdpi) of your bitmap for the different screen pixel densities.
If you have a drawable resource defined in XML that is independent of pixel dentity (e.g. a Shape Drawable) you should place it in drawable.
Select the project tab on the left
Under android Right click on the drawable (under folder "res").
Select Show in explorer or Reveal in finder
You should be able to see the drawable folder

Categories

Resources