In Android Studio, when a project is created it includes a bunch of drawable folders, but each with a suffix indicating their size.
For example, there's
drawable-mdpi
drawable-hdpi
drawable-xhdpi
...
However, very often I see instructions to add something to the drawable folder. For example, in the Android documentation about selector xml resources, here.
Should I add a drawable folder without a suffix? Or should I add the xml file to all of the different drawables? Why is there no plain drawable from the beginning?
You can add drawable folder without any suffix for selectors or some nine patch images which you want to be generic but drawable folder without suffix is basically for selectors only.
Android studio or eclipse does not provide it while project creation coz it doesnt know your pre requirement for these thing.
So there is no harm in creating the folder of your own.
while developing in eclipse there was no folder for fonts or xml folder for widget but you can create these folders on your own.
You can use drawable folder without any suffix. Also? if you have owner file used on any screen, you can set image to own of any drawable folder with any suffix.
Related
I'm new to Android programming. I was working for UI design stuff using Adobe XD and I exported the stuff I created to Android Studio. I was following this tutorial. And I was trying to use the stuff in drawable folders I created. (like drawable-hdpi) But the stuff that is stored in these folders doesn't show up. Only images that are stored in drawable folder show up. What am I wrong with this?
I mean the files doesn't show up as a suggestion and on this list.
This is the normal behavior.
Folders like drawable-hdpi or drawable-mdpi should contain the same as per name drawables as the drawable folder but with different resolutions.
When you choose a drawable in code or resources you see the drawables contained in drawable folder but at run time depending on the resolution of the emulator/device another drawable with the same name as the original from the other drawable-xxxx folders will be used.
In the dialog in the image you posted if you click on project you may see drawables from the other folders and choose them, but it's always a good practice to use the Drawable folder too.
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.
I'm working on an application that deals with getting an image from the drawable folder. In one of my last application what I did was I created a different ic_abc folders for each icon in my application and in there, there would be same image with different sizes in each of them. I was using these icons in the menu folder in that application.
Now in this application I don't know why but I can't access my drawable assets directly from the activity like R.id.imagename or R.drawable.imagename
Any ideas why is it acting like this?
The resource system currently does not support sub folders in your drawable folders. However, the different sizes of icons will be automatically arranged in appropriate subfolders by Android Studio if you do it properly.
You will need the following setup:
res
-- drawable
-- drawable-mdpi
-- drawable-hdpi
-- drawable-xhdpi
etc..
Then when you put your icon sizes in each of these folders, Android Studio will map them under one folder that has the same name as your icon.
The reason why you can't reference the files in your subfolders trough the R file is because the compiler will ignore any files in a subfolder, therefor it doesn't add the reference to the R.java file.
I am using Android Studio version 1.2.2 and this how my res folder looks:
As you can see there are no drawable folders present.
My concern:
Is the drawable has been deprecated and instead of it I have to place all the images used in the app in mipmap folders.
If I need to create the selectors or any shape for a view I need to place it in the "drawable" or the "mipmap".
Does anyone has clue about it?
Is the drawable has been deprecated and instead of it I have to place all the images used in the app in mipmap folders.
mipmap folders are for placing your app icons in only and in case of drawer folder, any other drawable assets you use should be placed in the relevant drawable folders as before.
You should go through Google Blog which says
"It’s best practice to place your app icons in mipmap- folders (not the drawable- folders) because they are used at resolutions different from the device’s current density."
If I need to create the selectors or any shape for a view I need to place it in the "drawable" or the "mipmap"
Just create drawer folder if you want to use selectors.
if you are building different versions of your app for different densities, you should know about the "mipmap" resource directory. This is exactly like "drawable" resources, except it does not participate in density stripping when creating the different apk targets.
But if you want to use selectors than you can create a drawable folder..
I m trying to integrate different image size in my app but the problem is that in Android Studio there are not the drawable-Idpi,mdpi,hdpi,xhdpi folders.
I ve checked already other threads and the answers were that I just need to skip into the Project view instead of the Android one. But the results are the same. There is just one generale folder called drawable
And if I try to add another resource folders the drawable is missing.
Just create a new folder:
Right click 'res' folder --> New --> Android Resource Directory.
In the wizard, select drawable as 'Resource Type'. And then 'Density' from the resource qualifiers.
With regard to the 'mipmaps' folders, Android now prefers app icons in these folders because it can use an icon in a different density to the screen density.
More about mipmaps here: http://android-developers.blogspot.de/2014/10/getting-your-apps-ready-for-nexus-6-and.html
I had the same problem before.
I fixed it by downloading an icon that i wanted from http://www.icons4android.com/
now this site provides all the drawable-Idpi,mdpi,hdpi,xhdpi folders for download for each icon they have, I just highlighted all the drawable-Idpi,mdpi,hdpi,xhdpi folders, copied them, and then pasted them to android studio res folder.
(I did this in android view)
I hope this helps
You can create folder same as drawable, drawable-hdpi, mdpi, xxhdpi ... etc
Its look like
But when you see source code using
Add images in draweble its ask you in which folder you want to add(copy n past images in studio)
You can directly creat folder in res its also work...