[Android Themes] iamareebjamal:
How to create Icon Packs for Go/Apex/Nova/Holo/ADW/Launcher Pro/Xperia Home Launchers​

However, there are many guides on Apex Launcher, Nova. ADW but when someone starts, he finds himself rather confused on which launcher to start working with and then how to add support of other launchers in it.

I was confused too on how to create Holo Launcher icon pack, then I found out LauncherPro guide which worked on Holo Launcher. Then, I further went on adding launchers as people requested for my Metrosphere Icon Pack. I got great help from DSaif's guide here. Then, I took the Apex Sample Pack from here and added support of other launchers in it. You can check that guide if are further looking onto advanced options of icon packs in Apex or creating themes for Apex, this guide will concentrically based on Icon apk CreationYou can also add support of different launchers from there, but if you are lazy like me, then you can follow this guide which has a sample pack with support already added and I'll be guiding you on how to further add icons in it ;)
​

Pre-Requisites​

Eclipse with ADT Plugin

Icons which you want to add

Time and Patience

Guide​

1. Downloading the sample

Download the Sample Icon Pack Source zip from below and extract it in any accessible local directory.

2. Importing the Project

Now open Eclipse and select File>Import

A window will pop up, drop down the Android Category and select Existing Android Code Into Workspace and Click Next

It will ask you to chose the root directory. Browse to where you extracted the Sample Icon Pack

​

Click on OK. And select Copy projects into workspace and then click on Finish.

3. Renaming Package Name

Now, you'll see the IconProject dropdown in Package Explorer window in Eclipse.

Now, you want to rename your Icon Pack's Package name as desired. For that, right click on IconProject and select Android Tools>Rename Application Package, and type in the name you want and click OK.

​

Also, Expand the IconProject Folder by clicking on drop down button and then, expand src folder, and you'll see areeb.apex.metrosphere.iconpack named file. Right click on it and Choose Refractor>Rename and type in the same package name you typed in previously, and Click OK

​

Name, the above steps for renaming package name can be omitted if you have yourself replaced the name evrywhere manually such as mainactivity.java, AndroidManifest.xml, etc

4. Naming your Icon Pack and changing description

Now, go to /res/values/strings.xml and change the name of Icon Pack from Sample Icon Pack to anything you want

There are also description of theme, you contact info, etc that can be changed in strings.xml

In AndroidManifest.xml, you can change some more informations such as version number, etc

5. Adding icons to your icon pack-

Now, we will be adding our icons in the icon pack but first, some things to clear-

For Go, Holo, Nova, Apex or other launchers - iconbase, iconmask, iconupon pngs can be used to provide a uniform look across icons on the device (More info is provided in Apex Launcher Icon Pack Tutorial). If you don't want them, just go to /res/xml/appfilter.xml and delete these lines accordingly:

<iconback img1="iconback" />
<iconmask img1="iconmask" />
<iconupon img1="iconupon" />

Now, how to add icons in icon pack? Ok, let's come to the point.

Add all your icons in drawable-xdpi (x=xh,h,m,l) folder depending upon for which dpi you have created them. XHDPI are normally 144x144, and HDPI are mainly 90x90.

You don't need to resize your icons for different DPI. For let's say, you made HDPI icons, now, you don't have to resize them for MDPI or LDPI devices, android does it on it's own. But definitely, HDPI icons will look pixelated on XHDPI, so it's recommended to make icons of as high resolution as possible.

Once added in the folder, let's say drawable-hdpi, we'll start the renaming process.

Holo Launcher updated it's theming engine, so it's very easy to put icon names now

You can put any name for your icons like browser for Browser and opera_mini for Opera Mini. It's your choice. Now, keep in mind that your icons should only be in lower case and no character like .,?/\|:";<>{}][ etc should come in their name, only underscore _ is allowed

6.

I) Open /res/xml/drawable.xml and add all the new icon names in it in this format

<item drawable="opera_mini" />
<item drawable="browser" />
<item drawable="fruit_ninja" />

(Required for icons to appear in Icon Selector Menu, controls icons position in it too, i.e, icon registered above in xml also appears above in Icon Selector)

II) Open /res/values/iconpack.xml and add all the new icons in this format

<item>opera_mini</item>
<item>browser</item>
<item>fruit_ninja</item>

(Does same thing as above in Apex Launcher. Deleting any one of the above two breaks functionality in one of the launchers)

Order of icons in these xml decide the order of icons in Icon Selector

III)

Find ComponentInfo name first by going in activities.droidicon.com

Edit : Above site doesn't work as reported by many people. Here are some other sites:

http://xdaforums.com/showpost.php?p=54038742&postcount=369

Search your app name. For example Opera Mini. You'll get search results like this

Opera Mini

com.opera.mini.android

com.opera.mini.android.Browser

com_opera_mini_android_browser

com.opera.mini.android/com.opera.mini.android.Browser

The last name is what you want to get

Open /res/xml/appfilter.xml and add all new icons in this format

<item component="ComponentInfo{[COLOR=Red]com.mobint.hololauncher/com.mobint.hololauncher.Launcher[/COLOR]}" drawable="[COLOR=DeepSkyBlue]holo_launcher[/COLOR]" />

Place the name you got from activities.droidicon.com in the red field you see above and in blue field, add the icon name of that app. For example, for Opera Mini, we took name as opera_mini, so the line will be like this

<item component="ComponentInfo{[COLOR=Red]com.opera.mini.android/com.opera.mini.android.Browser[/COLOR]}" drawable="[COLOR=DeepSkyBlue]opera_mini[/COLOR]" />

In the same way, resultant will look like this

<item component="ComponentInfo{[COLOR=Red]com.opera.mini.android/com.opera.mini.android.Browser[/COLOR]}" drawable="[COLOR=DeepSkyBlue]opera_mini[/COLOR]" />
<item component="ComponentInfo{[COLOR=Red]com.android.browser/com.android.browser.BrowserActivity[/COLOR]}" drawable="[COLOR=DeepSkyBlue]browser[/COLOR]" />
<item component="ComponentInfo{[COLOR=Red]com.halfbrick.fruitninja/com.halfbrick.fruitninja.FruitNinjaActivity[/COLOR]}" drawable="[COLOR=DeepSkyBlue]fruit_ninja[/COLOR]" />

(Used in Go, Holo, Nova and Apex to apply icons. Also, saves a lot of icons if you want to apply same icon to many apps)

Some example from third xml, and how can we use it:

1. Applying single icons to many apps:

Here, same contacts has been applied to MANY apps that had different activity names in different devices.

<item component="ComponentInfo{com.android.contacts/com.android.contacts.DialtactsActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.activities.DialtactsActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.sec.android.app.contacts.DialerEntryActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.DialtactsContactsEntryActivityForDialpad}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.activities.TwelveKeyDialer}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.BbDialtactsMainFrameActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.DialtactsCallListEntryActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.DialtactsCallLogActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.DialtactsPhoneEntryActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.DialtactsRecentEntryActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.PhoneDialtactsActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.contacts/com.android.contacts.SmartDialerActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.htcdialer/com.android.htcdialer.Dialer}" drawable="com_android_contacts_dialtactsactivity" />
<item component="ComponentInfo{com.android.htccontacts/com.android.htccontacts.DialerTabActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.phone/com.android.phone.DialtactsCallLogActivity}" drawable="contacts" />
<item component="ComponentInfo{com.android.phone/com.android.phone.DialtactsContactsEntryActivity}" drawable="contacts" />
<item component="ComponentInfo{com.huawei.android.dialer/com.huawei.android.dialer.TwelveKeyDialer}" drawable="contacts" />
<item component="ComponentInfo{com.motorola.dialer/com.motorola.dialer.CallLogShortcut}" drawable="contacts" />
<item component="ComponentInfo{com.motorola.dialer/com.motorola.dialer.DialtactsContactsEntryActivity}" drawable="contacts" />
<item component="ComponentInfo{com.samsung.android.app.dialertab/com.samsung.android.app.dialertab.DialerTabActivity}" drawable="contacts" />
<item component="ComponentInfo{com.samsung.dialer/com.samsung.dialer.SplashScreen}" drawable="contacts" />
<item component="ComponentInfo{com.sec.android.app.dialertab/com.sec.android.app.dialertab.DialerTabActivity}" drawable="contacts" />
<item component="ComponentInfo{com.sonyericsson.android.socialphonebook/com.sonyericsson.android.socialphonebook.DialerEntryActivity}" drawable="contacts" />

2. Some miscellaneous examples of this code:

7. Testing your app

Once, this all process is complete, I hope many things would have become clear to you, now what you have to do is, test your app. For that,

Connect your phone to PC. Make sure USB Debugging is turned on (Omit, if you plan to use Emulator)

Click on the little drop down arrow and select Run Configurations...

Make sure, the project is same as your icon pack

​

Click on Run

Now, your device ADB ID will appear, or Emulator's if you are using it instead. Select it and Click on OK.

Your app will be installed accordingly, Test it thoroughly and on different launchers

8. Creating your app

When you have tested it thouroughly and want to make it an app, Select File>Export>Export Android Application and Select your IconProject.

Click on next and choose Create New Keystore and choose the location where you want it to be created. Enter any password you want.

Click next, now, enter any name you want in alias, password, set Validity to 25 years(your choice), First and Last Names. Other Fields are Optional.

You might want to remember those key location, alias and passwords for both as you will be signing upcoming updated of your icon pack with the same key so your fans don't have to uninstall older app before installing the new one

Click next, then choose where you want your app to be created and click on Finish

9. Enjoy ;)

Download Sample Icon Pack Source​

UPDATE

For those who can manage without a guide, I have created another source which has VPI Indicators in Icon Chooser.

I will write the guide after some time as I am busy nowadays, more information here​

I am human and tend to make mistakes, please point out if you see any.

Feel free to ask any Questions :D

Credits

DSaif

dennisxl

vanessaem

the1dynasty