What to use mipmap or drawable - android

I am new android user and using Android Studio 1.3. I want to create simple splash screen, for that,i create different drawable folders where i store splash screen background images. I copy all ic_launcher from respective mipmap folders and paste them in respective drawable folders. and change icon path in manifest also.as,
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme">
to,
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
but this is giving me error that,
Error:(14, 24) No resource found that matches the given name (at 'icon' with value '#mipmap/ic_launcher').
My question is,
Does we always need to store app icons in mipmap folders only? why?
When to use mipmap and drawable?

Using mipmaps for your launcher icon is described as best practice by the Android team. The advantage you get is that you can keep resources in the mipmap folders for all device densities and then strip out other resources from the drawable folders that are not relevant to the specific users device density.
For example a user has a device that is classified as xxhdpi. The drawable resources in your apk for all other densities, such as xxxhdpi, are not required and can be stripped out.
reference

The mipmap folders are for placing your app/launcher icons (which are shown on the homescreen) in only.
Any other drawable assets you use should be placed in the relevant drawable folders as before.
According to this Google blogpost and Android Dev's Recommended:
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.

Related

You need to check the icon inside your APK because it is not valid

While trying to upload my apk im getting this error..."You need to check the icon inside your APK because it is not valid."
Manifest Code
<application
android:allowBackup="true"
android:icon="#drawable/wallet_logo"
android:label="Wallet"
android:supportsRtl="true"
android:theme="#style/AppTheme">
My logo is a vector asset
The app icon specifically (ic_launcher or whatever) must be in mipmap now, since Google play rejects any builds with the app icon in drawable folders.
Your launcher icon should be in png format. Read this. You should probably follow this convention and convert your vector to png and it should work.
This may be happening because of some of the following reasons:
1)your launcher image size is too big and installing the apk may crash the UI
2)Launcher icon is not in the mipmap folder
3)Launcher image is not in PNG.
Follow this link to make good launcher images which will not behave weirdly nor have weird outputs.
https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html#foreground.type=image&foreground.space.trim=1&foreground.space.pad=0.25&foreColor=rgba(96%2C%20125%2C%20139%2C%200)&backColor=rgb(255%2C%20235%2C%2059)&crop=0&backgroundShape=square&effects=shadow&name=ic_launcher
It's worked for me,
Replaces my app icon with below Android guidelines icon:
512 x 512, 32-bit PNG (with alpha)
And place the icon in mipmap folder not in drawable folder.

Keep on showing standard green icon in Android

I've tried to put an ic_launcher icon in the drawable-xxhdpi dir , I've tried to delete this directory completely - the result is still the same - standard green icon on a full-HD screen
Maybe it's just accessing a different folder, like any of the other drawable folders? If you delete it, I'm sure that they just take it from a different folder.
Android will use a default icon unless you specify a valid one in the manifest. Put your own icon in a drawable folder (ideally one the correct size in each one) and update your manifest's <application> element.
<application android:icon="#drawable/ic_launcher">

Android Manifest - how to specify the 4 diff image files and where to put them in the app?

I am looking at these Android instructions: http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html#size
and I made the 4 image sizes, but how do I specify them in the Android Manifest file? And where do I place the images within the code base?
So far I have this
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/CustomTheme" >
But not sure how to specify the specific sizes of the launches icons and when they need to show up.
Thanks!
You don't need to write anything on manifest file.
You need to put images on related drawable folders like:
res\drawable-hdpi\ic_launcher.png
res\drawable-mdpi\ic_launcher.png
res\drawable-ldpi\ic_launcher.png
res\drawable-xhdpi\ic_launcher.png
You do not have to specify it in Manifest File, place them in drawable-hdpi, drawable-mdpi and drawable-ldpi folders depending upon the resolution, you can create one more folder drawable-xhdpi to support new High density screens like those like Google Nexus
You have to place images in folder res/drawable-hdpi, res/drawable-ldpi, res/drawable-mdpi and
change the name "icon" to your_name in the below code in Android Manifest.
<application android:icon="#drawable/icon" android:label="#string/app_name">

Android Icons, how to specify?

Where do I put my icons in my android file structure, and how do I reference them in the manifest xml?
Thanks
You put them in your drawables folders under res.
There are three "types" of drawables, hi-res, med-res and low-res respectively.
Each gets their own folder:
drawable-hdpi
drawable-mdpi
drawable-ldpi
You can reference them in your code directly by using
R.drawable.(icon name)
If you want to use them in your XML files, use this instead:
#drawable/(icon name)
As long as your drawables have the same name in all the folders, Android will pick the right one to show depending on the DPI of your device's screen.
More info about drawables here: http://developer.android.com/guide/topics/resources/drawable-resource.html
For those reading back later, the question was about the launcher icons.
Their sizes are as follows:
ldpi: 36x36 px
mdpi: 48x48 px
hdpi: 64x64 px
xhdpi: 96x96 px
You can find more about the launcher icons here: http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html#size
The article also gives some do's and don'ts about launcher icons. Might be worth a look.
I assume you mean a main icon for your application? If not please disregard this answer.
Under res create a drawable folder and place your icon there.
In the androidmanifest.xml you'll need to add the following code
<application android:icon="#drawable/logo" android:label="#string/app_name">
You can exchange the logo to fit your icon filename.
In the relevent drawable folder e.g. res/drawable-hdpi

Set icon for Android application

How can I set an icon for my Android application?
If you intend on your application being available on a large range of devices, you should place your application icon into the different res/drawable... folders provided. In each of these folders, you should include a 48dp sized icon:
drawable-ldpi (120 dpi, Low density screen) - 36px x 36px
drawable-mdpi (160 dpi, Medium density screen) - 48px x 48px
drawable-hdpi (240 dpi, High density screen) - 72px x 72px
drawable-xhdpi (320 dpi, Extra-high density screen) - 96px x 96px
drawable-xxhdpi (480 dpi, Extra-extra-high density screen) - 144px x 144px
drawable-xxxhdpi (640 dpi, Extra-extra-extra-high density screen) - 192px x 192px
You may then define the icon in your AndroidManifest.xml file as such:
<application android:icon="#drawable/icon_name" android:label="#string/app_name" >
....
</application>
Add an application launcher icon with automatic sizing.
(Android studio)
Go to menu File* → New → Image Assets → select launcher icon → choose image file.
It will automatically re-size.
Done!
I found this tool the most useful.
Upload an image.
Download a zip.
Extract it into your project.
Done
https://romannurik.github.io/AndroidAssetStudio/
It's better to do this through Android Studio rather than the file browser as it updates all icon files with the correct resolution for each.
To do so go to menu File → New → Image Asset. This will open a new dialogue and then make sure Launcher Icons is selected (Which it is by default) and then browse to the directory of your icon (it doesn't have to be in the project resources) and then once selected make sure other settings are to your liking and hit done.
Now all resolutions are saved into their respective folders, and you don't have to worry about copying it yourself or using tools, etc.
Don't forget "Shape - none" for a transparent background.
Please don't edit my answer without asking.
Put your images in mipmap folder and set in manifest file...
like as
<application android:icon="#mipmap/icon" android:label="#string/app_name" >
....
</application>
App Folder Directory :
Icon Size & Format :
Place your images in drawables folder under either of the three and set it like this.
Code
<application android:icon="#drawable/your_icon" >
....
</application>
Right click your project, go to New > Other > Android > Android Icon Set
Then follow the instructions on the Wizard
1-Create Your icon in Photoshop Or Coreldraw by size 256*256
note that use PNG file format if you want to have a transparent icon
2-Upload Your icon in https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html
3-Set your setting on this site
4-Download the zip file automatically created by the webpage by clicking on download button
5-Extract the zip file and copy res folder to you project library
note that res folder contain all size icon
6-finally you need to set the manifest to use icon
<application android:icon="#drawable/your_icon" >
....
</application>
You can simply install an Android studio Martial icons plugin its name is please check plugin URL Material Design Icon Generator and check this GIF for more details:
This is mainly for creating the icons with required sizes, and it will be located directly in its folders.
I found all these answers that used to be solid answers to be a bit dated now. I reckon this will be the fate of this answer someday.
Click on your main project, most people would have "app" as their main project name by default. I like to be specific since I have other projects as well.
[your project name|app]->"New"->"Image Asset"
Then you will get to pick an image. I chose once that wasn't the greatest fit. Notice the tool shows you the "safe zone".
You can sample the different resolutions. Change the name, etc. The default name is "ic_launcher". I prefer to be expressive with the name so there is no confusion later which ic_launcher this belongs too.
Choose "Next", make changes if you need to, and ultimately "Finish". I found the rest of the tool to be self explanatory. For more info I suggest reading the manual that describes all these settings in more detail: Android Studio Image Asset Tool Documentation
On "Finish" this will put the files into the respective folders under the expected "res" folder.
The next thing you have to do is have to tell the project that's the icon you want to use. Inside the AndroidManifest.xml do something like the following (using your own name you chose to use above.)
<application
android:icon="#mipmap/pooflingers_ic_launcher">
That's pretty much it, as of today anyway... I am using Android Studio v4.2.1 Let me know when these steps become out of date.
You have to follow steps like:
You will see your default icons ic_launcher.png like:
You have to change all the images which are in mipmap-xxxx folders.
First of you have to create your own logo or pick up image that you want to place as icon of launcher and upload here Android Asset Studio - Icon Generator - Launcher icons, You will get all the set of mipmap-xxxx and web_icon also from that link.
Now you have to copy all the folders which are in side of res folder,
Now go to Android Studio Project -> Right click on res folder -> Paste. It will prompt you like File 'ic_launcher.png' already exists in directory, You can press Overwrite all. It will paste/replace images in respective folder.
Now you can run and see your application icon with new image.
Happy Coding :) :)
Choose icon picture copy this pic
Paste it into your project's res/drawable folder
Open manifest file and set
Run program
If you have an SVG icon, you can use this script to generate your android icon set.
In AndroidManifest change these :
android:icon="#drawable/icon_name"
android:roundIcon="#drawable/icon_name"
Define the icon for android application
<application android:icon="drawable resource">
....
</application>
https://developer.android.com/guide/topics/manifest/application-element.html
If your app available across large range of devices
You should create separate icons for all generalized screen densities,
including low-, medium-, high-, and extra-high-density screens. This
ensures that your icons will display properly across the range of
devices on which your application can be installed...
Size & Format
Launcher icons should be 32-bit PNGs with an alpha channel for
transparency. The finished launcher icon dimensions corresponding to a
given generalized screen density are shown in the table below.
Place icon in mipmap or drawable folder
android:icon="#drawable/icon_name" or android:icon="#mipmap/icon_name"
developer.android.com/guide says,
This attribute must be set as a reference to a drawable resource
containing the image (for example "#drawable/icon").
about launcher icons android-developers.googleblog.com 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. For example, an xxxhdpi app icon can be
used on the launcher for an xxhdpi device.
Dianne Hackborn from Google (Android Framework) says,
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.
For launcher icons, the AndroidManifest.xml file must reference the mipmap/ location
<application android:name="ApplicationTitle"
android:label="#string/app_label"
android:icon="#mipmap/ic_launcher" >
Little bit more quoting this
You want to load an image for your device density and you are going to use it "as is", without changing its actual size. In this case you should work with drawables and Android will give you the best fitting image.
You want to load an image for your device density, but this image is going to be scaled up or down. For instance this is needed when you want to show a bigger launcher icon, or you have an animation, which increases image's size. In such cases, to ensure best image quality, you should put your image into mipmap folder. What Android will do is, it will try to pick up the image from a higher density bucket instead of scaling it up. This will increase sharpness (quality) of the image.
Fore more you can read mipmap vs drawable folders
Tools to easily generate assets
Android Asset Studio by romannurik.github
Android Asset Studio by jgilfelt.github
Image Asset Studio(from Android Studio)
Material Icon Generator.bitdroid.de
Android Material Design Icon Generator Plugin by github.com/konifar
A script to generate android assets from a SVG file
Read more : https://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html
A bit old, but for future use:
Open Android Studio -> app/src/main/res -> Right Click -> Image Asset
Goto File->new->ImageAsset.
From their you can create Image Assets for your icon.
After that we will get icon image in mipmap different formats like
hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi.
Now goto AndroidManifest.xml
<application android:icon="#mipmap/your_Icon"> ....</application>

Categories

Resources