[GUIDE] Apex Launcher Theme Tutorial - Android Themes
Introduction
This tutorial helps you get started creating your own themes for Apex Launcher. Since themes are packaged and distributed in the form of APK files, you'll need to know the basics about Android app development to make themes.
Prerequisites
Before you begin, you need to set up your development environment. Please install the required software in the following order.
JDK 6
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Android SDK
http://developer.android.com/sdk/index.html
Eclipse IDE
http://www.eclipse.org/downloads/
ADT Plugin for Eclipse
http://developer.android.com/sdk/eclipse-adt.html
How to install these developer tools is not within scope of this tutorial, For details, make sure to read and follow the instructions in the links provided above.
Creating Your Theme
Apex Launcher supports different components in its theme engine. Icon packs replace app icons on the desktop, dock, and in the drawer. Apex skins allows the customization of the look and feel of the launcher itself, including dock background, folder background, icon label color, etc. You may also change the font of icon labels and provide a bunch of wallpapers along with your theme. Each theme may contain one or more components.
Here are two sample themes to help you get started. If you are just creating an icon pack, please use the icon pack sample as a base and follow the instructions below to add icons to the theme. If you want to go for a complete theme design, start with the other theme sample which includes all types of components.
Download Apex Icon Pack Sample
Download Apex Theme Sample
Regardless of which sample theme you choose, the first step is to import the sample project into Eclipse. Here are the instructions.
Extract the sample archive file to your hard drive.
Open Eclipse, choose "Import..." from the File menu.
In the Import dialog, choose "Existing Projects into Workspace" under General, and click Next. Then browse to the sample project directory and click Finish.
Change the package name. To do this, first expand the ApexIconPackSample (or ApexThemeSample) project in the Project Explorer and then expand the src folder. Now right click "com.yourname.iconpackname" (or "com.yourname.themename") and select "Refactor > Rename...". Enter your desired package name and click OK to save the change.
Right click on your theme project in the Eclipse Project Explorer and select "Android Tools > Rename Application Package". Enter the same package name (as used in the previous step) and click OK.
Navigate to and open "strings.xml" under "res/values" and change the theme information to your needs.
Replace the icon.png files under the drawable folders to use your own icons. Note that the sample projects are configured in a way such that they will not show up in the drawer. However, the icons are still visible in the Apex Launcher theme settings.
Provide a feature graphic and up to 5 preview images in your theme. These are optional, so you may just delete the entries from "strings.xml" and the corresponding image files if you decide not to provide these images.
Now, let's get down to the different components. Again, you may include any combination of the following components in your theme.
Icon Pack
First of all, please make sure config_iconpack is set to true in "strings.xml".
HTML:
<bool name="config_iconpack">true</bool>
This will let Apex's theme engine know that your theme includes an icon pack component.
Next, open the appfilter.xml file under the res/xml directory. (Note: This file used to be located under the assets directory, but the new app encryption feature in JellyBean made it impossible for the theme engine to access assets of paid themes.) You need to add an entry for each activity that you provide an icon for, in the following format:
HTML:
<item component="ComponentInfo{com.package.name/com.package.name.ActivityName}" drawable="icon_name"/>
For instance, here's how we provide an icon for the Browser app in the sample project:
HTML:
<item component="ComponentInfo{com.android.browser/com.android.browser.BrowserActivity}" drawable="com_android_browser_browseractivity" />
<item component="ComponentInfo{com.google.android.browser/com.android.browser.BrowserActivity}" drawable="com_android_browser_browseractivity" />
Some apps (Browser, Camera, etc.) may have different package names but they share the same activity name. Therefore, specifying both the package name and the activity name can help avoid any ambiguity if you need to provide separate icons for such apps. Please note that we do not include the file extension (.png) for the drawable attribute value.
When providing icons, please make sure they are of the right size (i.e., resolution) depending on the screen density you are targeting. Generally, Android supports these density buckets: ldpi, mdpi, hdpi, xhdpi, and xxhdpi. Please keep in mind that xxhdpi is supported starting from JellyBean, so devices running ICS may not pick it up properly. The screen resolution and icon size for each density bucket is listed below.
Code:
Density Screen Icon (px)
ldpi ~120dpi 36x36
mdpi ~160dpi 48x48
hdpi ~240dpi 72x72
xhdpi ~320dpi 96x96
xxhdpi ~480dpi 144x144
It is not required to support every density bucket listed above, as icons generally can be scaled to the right size automatically. If you are targeting higher-end devices, we recommend using xhdpi (96x96) as a starting point, which should provide enough detail on high resolution screens. After you decide on the density to support, export icons as transparent PNG files and put them in the correct folder (e.g., drawable-hdpi, drawable-xhdpi).
Since it is impossible to create a themed icon for every single app, you may provide default icon background images to achieve a uniform look and feel. If provided, these background images will be placed behind each icon that does not have a specific icon created for it. If you decide to take advantage of this feature, please declare your background images in the appfilter.xml file, like this:
HTML:
<iconback img1="iconback" />
<iconmask img1="iconmask" />
<iconupon img1="iconupon" />
<scale factor="0.75" />
The corresponding iconback image file (e.g., iconback.png) is placed under the proper drawable directory. The sample icon pack project only provides one iconback image, but you can have multiple iconback images as well, and the theme engine would randomly pick an image for each icon.
HTML:
<iconback img1="iconback1" img2="iconback2" img3="iconback3" img4="iconback4" img5="iconback5" />
All the unthemed icons will be scaled to fit atop an iconback. The scale factor is also declared in appfilter.xml, with 1.0 being the actual size (no scaling).
The Apex theme engine also allows you to mask icons using a transparent image (i.e., iconmask) or place an overlay (i.e., iconupon) on top of the icons. You may use a transparent iconupon image to decorate the icons (e.g., to achieve glossy effects).
The iconback, iconmask, iconupon, and scale tags described above are all optional, so if you do not want to use these features, just delete the tags from appfilter.xml and the corresponding image files from the sample project. In addition, the theme engine supports the icon shader feature for manipulating color values in icons.
For compatibility reasons, Apex also supports icon packs that do not use an appfilter. In this case, you must name the icon files properly so that Apex Launcher can detect and use them. Here's the naming convention:
Icon file name should be based on the full activity name
Always use lower case letters for file names
Replace dots with underscores
For example, to add an icon for the stock Android browser (com.android.browser.BrowserActivity) in your icon pack, add an icon with the name "com_android_browser_browseractivity.png" in the proper drawable directory. In case of conflicts, appfilter has higher priority and the icon file specified there will be used.
Finding the Correct Component/Activity Name
If you do not know the name of the activity, the "Activities" shortcut list may come in handy. Just long press on your home screen and select Shortcuts > Activities. The name of each activity will be listed under the label after you expand the desired app.
Since Apex Launcher 2.0, the activity picker has been improved to help you quickly find the correct component name for the app you want to theme. For each app, the package name is listed under the name of the app, and the name of each public activity is listed under the activity label. When the package name matches the activity name prefix, the activity name starts with a dot and the prefix is omitted for brevity. Otherwise, the full activity name is provided. Note that the main activity of each app is marked in blue and is the one that will appear in the app drawer. Here are two examples:
> Messaging
com.android.mms
>> Messaging
.ui.ConversationList
The activity name starts with a dot, which means you should concatenate it with the package name. The full component name for the Messaging app should be:
HTML:
ComponentInfo{com.android.mms/com.android.mms.ui.ConversationList}
> Chrome
com.android.chrome
>> Chrome
com.google.android.apps.chrome.Main
In this case, the activity name does not start with a dot, and is already the full name. The full component name for the Chrome app should be:
HTML:
ComponentInfo{com.android.chrome/com.google.android.apps.chrome.Main}
Besides the activity picker, you may also find the following websites useful:
http://activities.droidicon.com/
http://activities.tundem.com/
The next step is to declare the icons included in your icon pack. This can be done by adding an entry for each icon to the icon_pack array in "res/values/iconpack.xml". Here's an example:
HTML:
<string-array name="icon_pack" translatable="false">
<item>com_android_browser_browseractivity</item>
</string-array>
Again, we do not include the file extension (.png) in this array.
These declarations are important for the icon picker that allows users to change icons for apps/folders on the home screen. Only declared icons will appear in the icon picker when the user chooses your theme from the list.
Skin
The theme engine of Apex Launcher allows you to customize the look and feel of your desktop, dock, and drawer, by providing certain images and color values in your theme. The ApexThemeSample project includes all the things you may change, and it provides the default images and color values as the basis for your modification.
If you include a skin in your theme, make sure config_apexskin is set to true in "strings.xml".
HTML:
<bool name="config_apexskin">true</bool>
Feel free to use the sample theme as a starting point and replace any image in the drawable-xhdpi directory to your needs.
You may notice that some of the images are 9-patch drawables (those ending with .9.png). A nine patch graphic is a stretchable image, which Android will automatically resize to accommodate the contents. You can define stretchable regions that Android scales when the image is resized. The Draw 9-patch tool from the Android SDK allows you to easily create a nine patch graphic using a WYSIWYG editor. To learn more about nine patch graphics and the Draw 9-patch tool, please read the following references on the Android Developer’s site:
http://developer.android.com/guide/developing/tools/draw9patch.html
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
If you decide not to change certain images from the default theme, please delete the image from your theme package. For instance, if you do not want to theme the Apex action icons, you can just delete all the "ic_*.png" files from the drawable directory, and Apex will still use the default images. Doing so will help make your theme package slim by excluding unnecessary files and it also helps improve the performance of the launcher.
You may also notice a few xml files in the drawable directory. Those are state list drawables that select from different images based on their states. If you do not theme the drawer button, you will need to delete "all_apps_button_icon.xml" after removing both "ic_allapps.png" and "ic_allapps_pressed.png". Similarly, if you do not theme the drawer tabs, you will also need to delete the "tab_*.xml" files after removing the "tab_*.png" files. Otherwise, the project won't compile because these xml files depend on the other deleted images. For more information on state list drawables, please refer to the following link:
http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
To customize the color values for UI elements, please edit "colors.xml" and change the color values as you please.
Font
Place your custom font file under the assets folder and name it themefont.ttf. If this file is present in your theme, it will be automatically picked up by Apex Launcher. Please make sure that the font is working properly by testing it on your device.
Wallpapers
You may bundle wallpapers in your theme by putting the images inside the proper drawable directory. You also need to update "res/values/wallpapers.xml" accordingly, so that Apex will recognize the wallpapers. Here's an example from the sample theme:
HTML:
<string-array name="wallpapers" translatable="false">
<item>wallpaper_escape</item>
<item>wallpaper_outofthebox</item>
</string-array>
<string name="default_wallpaper">wallpaper_outofthebox</string>
All the wallpapers declared in the wallpapers array will be available from the Apex Launcher wallpaper chooser, while the default_wallpaper will be applied along with your theme (if the user chooses to). Note that you also need a lower-resolution preview image with a _small suffix in the file name for each wallpaper. For instance, place both wallpaper_escape.jpg and wallpaper_escape_small.jpg under the drawable directory. The preview image is only used in the wallpaper picker and the original image is used when applying the wallpaper.
Linking to Apex Theme Settings
If you like, there is a special Intent that you can use to direct users to your theme's details page in Apex theme settings, where they can apply your theme. Here's how:
Code:
final String ACTION_SET_THEME = "com.anddoes.launcher.SET_THEME";
final String EXTRA_PACKAGE_NAME = "com.anddoes.launcher.THEME_PACKAGE_NAME";
Intent intent = new Intent(ACTION_SET_THEME);
intent.putExtra(EXTRA_PACKAGE_NAME, getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "Apex Launcher is not installed!", Toast.LENGTH_SHORT).show();
}
finish();
You may include this piece of code inside your theme's activity (e.g., in the onCreate method) to launch Apex's theme settings. Please note that the sample projects are configured in a way such that no icon will show up in the drawer. If you need an icon for your activity, insert the android.intent.category.LAUNCHER category into the <intent-filter> section of your activity in the manifest file like this:
HTML:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="com.anddoes.launcher.THEME" />
</intent-filter>
It is important that you must include the com.anddoes.launcher.THEME category so that Apex can recognize your theme.
Testing Your Theme
It is very important that you test your theme on a device and make sure it looks exactly the way you expect it to be. You may follow these steps to test your new theme.
Connect your phone/tablet to the computer via USB.
Turn on USB debugging via System settings > Developer options > USB debugging.
In Eclipse, right click your theme project, select "Run As > Android Application".
On your device, launch Apex theme settings and select your new theme.
Apply the theme and restart the launcher.
Look around and see if everything works as expected.
After you have thoroughly tested your theme, you are ready to distribute it to users.
Signing and Releasing Your Theme
To release your theme to other Apex Launcher users, you need to sign, optimize, and export the APK file, which can be done seamlessly with Eclipse and the ADT plugin. For details, please read the publishing section on the Android Developers website.
http://developer.android.com/guide/publishing/app-signing.html
If you publish your theme on the Google Play Store, you may want to update it later. In this case, it is very important that you version your theme properly. You may find the following link helpful.
http://developer.android.com/guide/publishing/versioning.html
That's it! I hope this tutorial contains enough information to get you started working on your own themes. Happy theming!
Apr 29, 2013
Apex Launcher 2.0 now comes with an improved activity picker to help you find the right component name.
Updated tutorial to include a new "Finding the Correct Component/Activity Name" subsection
Jan 17, 2013
Updated sample theme to include new Apex Action icons.
Dec 6, 2012
Updated sample projects to support iconmask.
Updated tutorial to include a brief discussion on icon sizes.
Oct 10, 2012
Updated sample theme to support icon label shadow colors.
Sep 24, 2012
Updated sample projects for better iconpack support.
Updated tutorial in accordance with latest Eclipse/ADT.
May 22, 2012
Added support for iconback and iconupon in v1.2.1
Updated sample projects to include default iconback and iconupon images
Updated tutorial with iconback and iconupon descriptions
May 18, 2012
Added support for appfilter in v1.2.0beta3
Updated sample projects to include appfilter and new Apex action icons
Updated tutorial with appfilter descriptions
Awesome addition to a great launcher. Looking forward to seeing some epic themes.
Can't wait for some great themes. Apex is so win, uNF!
Sent from my Galaxy Tab 2 7.0 w/Tapatalk 2
Oh great. Well laid out template.
Just to check, I don't need to change XML files if I was to populate the hdpi/mdpi/ldpi folders with images in this template, as everything is already setup to accept those files? I just should delete whichever file entries from the XML that I don't want to theme?
Or has it been setup to only use the files from the XML folder at this point.
I am planning to make a red holo theme but haven't finished downloading the sdk yet. (Travelling, its going to take some time).
Sent from my GT-I9000 running CM9 (ICS 4.0.4) using XDA premium app
Very nice!
themes
will these themes be dependent on phone resolution or will they work on any phone with apex launcher because my phone is mdpi and i am worried that my phone will have no themes
If a theme already supports ADW/Go icon packs, do you recommend including the Apex specific code? I'm just trying to think about all the overlap between the various launchers and the resources included in the theme.
Edit: NVM. Just re-read the part about Apex free only supporting Apex themes. That means Apex code will definitely be needed. Thanks.
Two suggestions/questions.
A) If a theme supports multiple launchers, potentially /ignore the other configurations and only list Apex? See my screenshot for details. I also noticed that if you add Apex theme support, the Go launcher entry is no longer listed. I think it'd be smart to consolidate a theme (that supports multiple launchers) down to a single entry.
B) Would you be willing to add an intent, similar to GO/ADW.EX, that would allow a theme to direct a user to the Theme Settings activity? I'd really like the ability to bring a user directly to the settings from my dashboard.
Screenshot:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Koveleski said:
B) Would you be willing to add an intent, similar to GO/ADW.EX, that would allow a theme to direct a user to the Theme Settings activity? I'd really like the ability to bring a user directly to the settings from my dashboard.
Click to expand...
Click to collapse
Thats key.
And/or have an intent we can flag so we can continue to use the 'apply theme' feature within our apps.
well, here's my first theme for Apex Launcher
Nice theme!
I am currently travelling and haven't been able to setup a workable environment for eclipse (I don't have my own pc with me and the shared pc isn't really up to standard).
Would someone be able to compile just a base unthemed apex theme so that for the short time I can do a quick hack to add different images? Yes I know its not ideal but until I get home in 6 weeks, I don't have much choice...
Edit: I just mean a full theme but only using current unmodded apex images.
Sent from my GT-I9000 running CM9 (ICS 4.0.4) using XDA premium app
how i load themes on apex ?
vladnosferatu said:
how i load themes on apex ?
Click to expand...
Click to collapse
You need the beta. I have pro so might be different. Its in the apex menu > about apex launcher. There is an update option and an option to select whether updates are "stable" or "beta".
Sent from my GT-I9000 running CM9 (ICS 4.0.4) using XDA premium app
thanks
drakenabarion said:
Oh great. Well laid out template.
Just to check, I don't need to change XML files if I was to populate the hdpi/mdpi/ldpi folders with images in this template, as everything is already setup to accept those files? I just should delete whichever file entries from the XML that I don't want to theme?
Or has it been setup to only use the files from the XML folder at this point.
I am planning to make a red holo theme but haven't finished downloading the sdk yet. (Travelling, its going to take some time).
Sent from my GT-I9000 running CM9 (ICS 4.0.4) using XDA premium app
Click to expand...
Click to collapse
Are you talking about icon packs or complete themes? For icon packs, you need to declare your icon images in an XML file. For Apex skins, you probably don't need to change XML files (except strings.xml where you define the basic information about your theme). BTW, there is no xml folder in the provided sample projects.
opera38205 said:
will these themes be dependent on phone resolution or will they work on any phone with apex launcher because my phone is mdpi and i am worried that my phone will have no themes
Click to expand...
Click to collapse
Apex themes should work on any phone, but YMMV with each theme.
Koveleski said:
Two suggestions/questions.
A) If a theme supports multiple launchers, potentially /ignore the other configurations and only list Apex? See my screenshot for details. I also noticed that if you add Apex theme support, the Go launcher entry is no longer listed. I think it'd be smart to consolidate a theme (that supports multiple launchers) down to a single entry.
B) Would you be willing to add an intent, similar to GO/ADW.EX, that would allow a theme to direct a user to the Theme Settings activity? I'd really like the ability to bring a user directly to the settings from my dashboard.
Screenshot:
Click to expand...
Click to collapse
As of the latest beta, both of your suggestions have been addressed. A) Your theme would only appear once in the list even if it supports multiple launchers. B) Please refer to the new "Linking to Apex Theme Settings" section in the tutorial.
Please consider theme'ing the drawer using Golaunchers appfilter, instead of the icons naming, the icon naming method, is a bit "dated" as where it reacts the same way as ADW does with icons like Honeycombs Youtube icon, and all the angry birds stuff, it just wont accept it. Also, please consider an "iconback" option.
Thanks!
docsparks said:
Please consider theme'ing the drawer using Golaunchers appfilter, instead of the icons naming, the icon naming method, is a bit "dated" as where it reacts the same way as ADW does with icons like Honeycombs Youtube icon, and all the angry birds stuff, it just wont accept it. Also, please consider an "iconback" option.
Thanks!
Click to expand...
Click to collapse
Thanks for your suggestion. We will add support for appfilter in the next version, and will consider "iconback" in the future.
I love to use Apex Pro... And I'm waiting for your nice themes
Keep up your great work
dennisxl said:
As of the latest beta, both of your suggestions have been addressed. A) Your theme would only appear once in the list even if it supports multiple launchers. B) Please refer to the new "Linking to Apex Theme Settings" section in the tutorial.
Click to expand...
Click to collapse
Brilliant! I look forward to the appfilter support as well. Thank you for being so responsive to my suggestions and your continued development.
Related
[Tutorial][Themes][3-Jul-2010]Themes for SleepSense
Tutorial Skinning SleepSense Application: SleepSense What do you need? The only thing you need is an image-editor to edit the images A xml editor to change the colors of the menu, borders, chart or other controls Step by step: the original theme files Step by step Download the original default folder Open the files in this folder in your image editor Remake the images Save the images (of course) Edit theme.xml to change the colors of the menu, borders, chart or other controls Create a new Theme folder: [Your theme name] Theme Copy the edited images to your device in the folder [SleepSense installation dir]\Themes\ [Your theme name]Theme Go to the alarm and select you own theme. List of images in the \Themes\ folder Bkg_Clock.jpg Background of the sleep screen Bkg_Default.jpg Background of the menu Bkg_Item1.png The first item in the list Bkg_Item2.png The second/other item(s) of the list Bkg_ItemS.png The selected item of the list Bkg_TxtClock.jpg Background of the box with info in sleep screen Bkg_TxtMain.jpg Background of the info box Img_Chart.png The background of the sleep chart, the chart is projected over it. Icon_xxxx.png Several icons for in the menu or other Bkg_Slide.jpg Don’t touch it Icon_Dummy.png Don’t touch it To make it compatible with the 200*480/320 screen resolution add _240x400 or _240x320 after the image name Edit theme.xml You can edit the xml to change the colors of the fonts, borders etc. You can change a lot using the XML, but it’s pretty hard to understand (for a noob) Forecolor is the color of font, Backcolor the achtergrond, other colors are gradients to the backcolor <ImageFile1>XXXXXXXXX.png</ImageFile1> contains the imagefile that is used that control Code: …="Icon_XXXXX"><ImageFile1>Icon_XXXX.png</ImageFile1>… …="Bkg_Default"><ImageFile1>Bkg_Default.jpg</ImageFile1>… <BackColor>XXXXXX</BackColor> The background color of the control Code: … "Img_Chart"><BackColor>D3D3D3</BackColor>… …="LeftBox_Chart"><BackColor>102C52</BackColor>… <BorderColor>000000</BorderColor> Color of the border Code: ..lor><BorderColor>000000</BorderColor><Font>T… …olor><BorderColor>000000</BorderColor><F… <Font>[Font], [Size], [Formatting]</Font> Font of the control [Font] Font name [Size] Size of the font [Formatting] The formatting of the font (bold etc.) Code: …lor><Font>Tahoma, 5, Bold</Font>… …r><Font>Tahoma, 8, Regular</Font><Fore… <ForeColor>XXXXXX</ForeColor > Code: …nt><ForeColor>D3D3D3</ForeColor><Opac… …nt><ForeColor>808080</ForeColor></Con… These sections represent the topbuttons, main surrounding panel of the home menu, panel with for example the instructions, Clock colors, date colors, etc. In the Beta these values can change. Best thing to do is to change is color to white FFFFFF, save the file and start SleepSense <Opacity>XXX</Opacity> Definite the opacity of the control, From 255 to 0, which is transparent Code: …r><Opacity>125</Opacity><Ba… …Color><Opacity>80</Opacity><Ba… Note: all colors must be in HTML color codes (like FFFFFF or 708090) How to release your theme officially If you want to publish you personal theme send it to [email protected] in a zip file. We will check your theme and give, where necessary, advice and update this topic with your theme Any way of advertising through a theme is forbidden. When your theme is checked by the SleepSense team, we will add it to this topic. While choosing a new theme in SleepSense the user will have the option to choose from these themes in this topic too. The selected theme is downloaded, unzipped into the Themes folder and ready for use. Why? We decided to check themes to improve the quality of the themes. It has also benefits for the developer: *He will get useful advices *His theme will be showed in the theme showcase of this thread *His theme will be included with SleepSense What must I send? The theme folder with the images At least 3 screenshot (Optional) a cab installer
Showcase for now, there no SleepSense skins... Read the tutorial and make your one
also reserved for future
Waiting to see what is coming...
suscribed to see some work
Guide to ADW for newbs
This guide is to help people start creating Themes for ADW and understand what they are doing. Instead of just replacing images by unzipping an APK I will tell you how to create your own theme from scratch. I had a real struggle to find all this and I now I want to share what I found out I will provide you with links with content that you should read and write some things by myself. How to : Setup your working environment How to : Make your own theme Where should I put my images/xml? The drawables (images/xml) should be putted in the drawable folder as standard. If you want to have different images for different pixel density(xhdpi/hdpi/mdpi/ldpi) make the folders: drawable-xhdpi,drawable-hdpi,drawable-mdpi and drawable-ldpi. the text behind the hyphen (-) is a configuration qualifier. Android looks for these and if it suits the specific device it will choose the drawables from that folder instead of from the default folder. If a resource android looks for isn't found in the special folder it will instead look in the default folder for it. If you want different images for landscape mode you would need to create a folder called drawable-land and if you want different images when the device is both mdpi and in landscape you would create a folder called drawable-land-hdpi. Find out more about resource qualifiers How do I add my own icons? Find the name of the icon you want to replace at Theme Icon Name Database Place your own drawable in the right folder. E.g. To change the icon for the Android stock browser in a hdpi device I would ad a file called com_android_browser_browseractivity.png in drawable-hdpi. If I want the same icon for all devices that uses my theme I could add the same icon in the folder drawable. How do I export my theme for testing? Right click on you project in Eclipse and select export. Click the Android folder and select Export Android Application. Press next and then next again. Choose "Use existing keystore". Press browse. In windows find C:\Users\ENTER YOUR USERNAME HERE\.android\debug.keystore In Linux and OS X I think it is in: ~/.android/debug.keystore The Password is android.Press next.Choose "Use existing key". Alias: androiddebugkey Password:android Press next. Press browse and choose your destination of the apk. Click Finish and you are done. Help! ADW force closes and I can't uninstall the theme! Look here for sulution If there is something that needs to be added send me a PM or write a comment. I will add: program to use to create the images and eventually a complete sample theme with documentation. If you find the tutorial good, please post to bump the thread.
hello can you tell me how i make one of CUSTOM DOCK using the v0.3 dock_pack.xml standard in the theme ? thanks
Nice guide damn thats a big youtube video lol
Hi there. Just wondering if you have gotten multiple wallpapers into a theme , and if they look right on screen? I can change the wallpaper in the theme but i want to have a couple to choose from. Also i have tried a wallpaper that has a built in 'dock' graphic at the bottom. When i add it to a theme the dock is completely below the bottom. Any hints?
i hate that if after done with my theme and it says application not installed. somebody knows how to fix it?
Tutorial and Sample Eclipse Project for Creating a GO Launcher EX Theme
I want to preface this by saying that I am in no way, shape or form a graphic artist. I've picked up a bunch of techniques out of necessity over the last 15 years of being a Web developer but most of my techniques can be done faster and more efficiently by a qualified graphic artist. That said, I've managed to produce some pretty decent stuff over the years considering I don't really have a clue. So use this guide to help you put your graphics knowledge to work by creating some amazing themes. I created a theme for GO Launcher EX called "Sepia Theme for GO Launcher EX" (shameless plug: https://market.android.com/details?id=com.aac.go.sepia) and figured I'd share my experiences on how I created it. It took me three nights to create the theme above but I imagine if I was an actual graphic artist and wasn't learning as I did it I could have done it in a day (I'm also counting testing time and time to package and post to the Market). Anyway, here's how I did and how you can too. Attached to this post is an Android Eclipse project that you can use as a template. I originally created the project using the GO Dev Team's Theme Factory which actually created the project (Link: Theme Factory) and was the base for the Eclipse project in this post. I found that while a good start, the Theme Factory did not allow for certain code customizations (such as adding multiple wallpapers and preview graphics) as well as not allowing for custom namespaces which is really needed to make the theme your own. So, after using the Theme Factory to create the initial Android code, I imported it into Eclipse, stripped out all the garbage and cleaned it up a bit. All the graphics used are the default ones added by the Theme Factory so you will want to change them in your own theme. Here are some of the things you will want to customize when making your own theme (these are the absolute basics and if you are a graphic artist you will have no trouble digging in and customizing every other aspect). I highly recommend you download and open the Theme Factory and at least check it out. It's very rough but will clue you in to what graphics you should be customizing to create a theme. This assumes that you know how to use Eclipse and if you don't, that is beyond what I'm willing to discuss here. There are plenty of places to read up on that. Icons To add icons to the theme there are several steps you will need to take. First, create your icons. Once you have the icons you want for your theme you will want to add them to your project. Icons are placed in the GOThemeTemplate/res/drawable-hdpi. Once added there, you will need to reference them in two .xml files in Eclipse. Open GOThemeTemplate/assets/drawable.xml. Using the name of the png file you just added to the drawable-hdpi folder (do NOT add the ".png"), add a new <item> element for each. You will see a bunch listed there as examples for you but it will be in the form of HTML: <item drawable="png_name" /> Next, add a corresponding line to the GOThemeTemplate/assets/appfilter.xml file. It will be in the following format HTML: <item component="ComponentInfo{com.package.name/com.package.name.LaunchActivity}" drawable="png_name"/> The tricky part here is the component attribute. In order to enter the correct information for the brackets after ComponentInfo, you will need to find the correct package name for the app that the icon represents and the default activity that is launched when the icon is clicked. While this could be a ridiculously tedious process, the is a wonderful Web site that does all the work for you. Simply visit http://activities.droidicon.com and enter the app's name in the search box. At the time of this writing they have cataloged nearly 110,000 apps with they package names, main activity, icon and the proper format for three popular launchers' themes (ADW, Launcher Pro and GO Launcher EX). So once you have the proper package name and activity for the app whose icon you wish to replace (it is the last option and it even selects the text when you click it saving you one step), paste it between the brackets. Finally, in the drawable attribute, add the name of the png for the icon as you did in the drawable.xml file (again, do not add the ".png"). The theme template attached to this post contains the correct <item> tags for over 200 icons (sorry, icons not included, that's your job). There are many icons included as examples but only those created with the Theme Factory. The last thing you will need to deal with for the icons is the default icon back. In the GOThemeTemplate/res/drawable-hdpi folder you will find a file called iconback.png. This is the icon that will be placed behind all icons on the device that do not have a specific icon created for it. All icons will be scaled to fit atop this icon. The default is 70% of the icon's size. This can be changed in the appfilter.xml file in the <scale> tag at the top of the file. It looks like this: <scale factor="0.7"/>. Just change the factor attribute (1 being the actual size). You can change the name of the icon back image using the <iconback> tag in the appfilter.xml. There is also a transparent image that goes atop both icons called iconupon which can be changed using the <iconupon> tag. This creates an illusion that the three icons are one. Theme Configuration When users click Menu > Themes in GO Launcher EX they will be presented with a graphical representation of all the themes currently installed on their device. You want them to find your theme too. You will be working with a file name GOThemeTemplate/assets/themecfg.xml and there are a few images you will need to create and they are all to be placed in the GOThemeTemplate/res/drawable-hdpi folder. A thumbnail preview image exactly 110x180 in png format. You can view the image I left from my theme as an example. It's themepreview.png and the name of this image is defined <preview> tag (you can change this if you wish). One or more screenshots also in PNG format that are placed in the drawable-hdpi folder as well. These are also defined in the <preview> tag and and I have left three example screenshots as well. Each drawable above is defined in the <preview> tag with attributes labeled img1, img2, img3, etc. Finally, when users are previewing your theme you can provide them additional information such as the theme's name, your Web address and contact information. This is done in the GOThemeTemplate/res/values/themeinfo.xml file. There are two <string> elements with name attributes for defining the theme's name (as displayed on the theme chooser screen, not in the Market) and theme's information. Wallpapers To add wallpapers to your theme, you will need to modify at least one file (two if you want to change the name of your default wallpaper). You will need to edit the GOThemeTemplate/res/values/array.xml file. Open this file and edit the <string-array> element with the name attribute of <string-array name="wallpaperlist">. You will add an item element for every wallpaper you wish to add. For example, let's assume you have three wallpapers with following names: wallpaper_sand.jpg wallpaper_barrel.jpg wallpaper_cloud.jpg You would place these three wallpapers in the GOThemeTemplate/res/drawable-hdpi folder and then add three <item> elements to the XML file like this. HTML: <item>wallpaper_sand</item> <item>wallpaper_barrel</item> <item>wallpaper_cloud</item> To define which wallpaper loads as the default wallpaper when the theme is applied, edit the Wallpaper attribute of the <Desk> element in GOThemeTemplate/assets/desk.xml. Before users can a wallpaper other than the default wallpaper you will need to add thumbnails of the wallpapers. To do this, create thumbnail images in PNG format with dimensions of 170x142. Save them using the same name as the JPGs but add "_thumb" to the end. So, wallpaper_sand.jpg becomes wallpaper_sand_thumb.png. Your Theme's Name To name your app as it will appear in the app drawer, open GOThemeTemplate/res/values/strings.xml and edit the <string> element with the name attribute of "app_name." Your Theme's Icon To change the icon for your them, change the icon.png in the GOThemeTemplate/res/drawable-hdpi folder. Package Name You will need to customize the package name for publication in the Android Market. This name must be unique. Frankly, if you are actually using Eclipse and are editing these file then you should already be familiar with this. You will need to open the GOThemeTemplate/AndroidManifest.xml file and edit the "package" attribute in the <manifest> element. Further Customizations This tutorial really gives you a very basic overview on adding icons and wallpapers to your theme and how to get the basics accomplished. To really make your theme a theme and to stand out and be unique, there are dozens of other PNGs that you will need to edit, each being responsible for a specific UI element. For example, to add your own folder icon, edit the GOThemeTemplate/res/drawable-hdpi/folderback.png image. You will have to figure out what each icon does and how you can best edit them. The Theme Factory is an extremely useful tool for this and I highly recommend that you use that program alongside this tutorial and Eclipse project when creating your theme. The Theme Factory will guide you image by image and show you previews of what each does. However, I found that that's about the only things it's good for. When compiling my theme I found that Eclipse was the most efficient method. As mentioned above, multiple wallpapers and screen previews are not possible as of yet using the Theme Factory so you will need to manually edit the files anyway. I suggest starting with this project as it is really just a cleaned up version of what the Theme Factory produces and to use the Theme Factory as your images guide. Download Template You can download the Eclipse project theme template at the end of this post. I hope that this guide helps you and if you have any questions, feel free to post it here. I can't promise that I'll answer (I'm not on here as much as I used to be) but my hope is that this becomes a good spot for theme creation discussion.
Reserved for possible future use.
Thank you (x2) for taking the time to put this together! What a great resource. I made my own adw theme but got very confused between the other go launcher theme tutorial threads. This is fantastic! Sent from my SPH-D710 using xda premium
Thanks for your post. I'm just thinking about making my first theme for Android in general So, I think I'll have a try with Go Launcher EX...
Thank You for your great tutorial. I am a great fan of MIUI ROM, but now I am on CM9 ICS while waiting from official MIUI ROM for Galaxy S. I managed to tweak a theme for Go Launcher based of MIUI, and I am very happy with this theme. The only problem for me is how to add more icons on the theme. What I did was to edit res\values\public.xml and change whatever app available with my own. For example, from: Code: <public type="drawable" name="weibo" id="0x7f020049" /> to: Code: <public type="drawable" name="evernote" id="0x7f020049" /> The question is how add new id (like id="0x7f020049")?
Awesome job!!
sawari said: Thank You for your great tutorial. I am a great fan of MIUI ROM, but now I am on CM9 ICS while waiting from official MIUI ROM for Galaxy S. I managed to tweak a theme for Go Launcher based of MIUI, and I am very happy with this theme. The only problem for me is how to add more icons on the theme. What I did was to edit res\values\public.xml and change whatever app available with my own. For example, from: Code: <public type="drawable" name="weibo" id="0x7f020049" /> to: Code: <public type="drawable" name="evernote" id="0x7f020049" /> The question is how add new id (like id="0x7f020049")? Click to expand... Click to collapse Those look like they came from smali file. I can't help with editing those. You shouldn't have to do that to build a theme. The source is available attached to this post. You can technically recreate/modify any theme from that.
Thank you very much for sharing this.. I have gotten everything to work except the menu background, menu text color, menu icons & menu dividers (pretty much everything about the menu). I saw those options in desk.xml and I tried editing them but for some reason, the changes didn't take. Also, couldn't change the folder background even though I changed the necessary images in drawable-hdpi. Please let me know if you were able to change those things. Thanks in advance.
This may be a dumb question, but when I have the files modified as stated above, how do I turn this into an apk for loading into GO launcher? I'm receiving the "error parsing package" when I change the name in Astro.
Cool.. BrooklynAvi said: I want to preface this by saying that I am in no way, shape or form a graphic artist. I've picked up a bunch of techniques out of necessity over the last 15 years of being a Web developer but most of my ......... Click to expand... Click to collapse Thank u so much for this,.. now i can make the GoEX theme my self, Nice tutor!! This is the theme that i created.. The theme here, but still for Launcher Pro, the Go ex are still in progress http://forum.xda-developers.com/showthread.php?t=1363692 and here's the Screenshoot taken with AVD for GoEx.. { "lightbox_close": "Close", "lightbox_next": "Next", "lightbox_previous": "Previous", "lightbox_error": "The requested content cannot be loaded. Please try again later.", "lightbox_start_slideshow": "Start slideshow", "lightbox_stop_slideshow": "Stop slideshow", "lightbox_full_screen": "Full screen", "lightbox_thumbnails": "Thumbnails", "lightbox_download": "Download", "lightbox_share": "Share", "lightbox_zoom": "Zoom", "lightbox_new_window": "New window", "lightbox_toggle_sidebar": "Toggle sidebar" } Thanks again for this great tutorial...
Great job, many thanks My way to create theme was: create resources and structure in Theme Factory, make detailed works in Eclipse and finnaly compile .apk using my own script coz Eclipse generate errors when exporting Regreads Pandik. Android Different Theme
Hallo. Has anybody succesed impleted Market protection system (liblary) into Go Launcher Theme? I tried fev times but with no succes Pandik.
Has any one been able to change the menu background, menu text color, menu icons & menu dividers (pretty much everything about the menu), using this template? I can't get it to work. Any help would be much appreciated.
sonnysekhon said: Has any one been able to change the menu background, menu text color, menu icons & menu dividers (pretty much everything about the menu), using this template? I can't get it to work. Any help would be much appreciated. Click to expand... Click to collapse Do it with Theme Factory, its very easy. Sent from my GT-I9100 using xda premium
I just can't change the pressing colour of applications on home screen. Any idea? Sent from my GT-I9100 using xda premium
Isn't it graphic? Look for PNG files in 9.png format. Sent from my Blade using xda premium
gkaipale said: Do it with Theme Factory, its very easy. Sent from my GT-I9100 using xda premium Click to expand... Click to collapse I'd rather use eclipse as it's a real pain to get the theme factory working on my pc along with eclipse installed. gkaipale said: I just can't change the pressing colour of applications on home screen. Any idea? Sent from my GT-I9100 using xda premium Click to expand... Click to collapse Also interested in this. pandik said: Isn't it graphic? Look for PNG files in 9.png format. Sent from my Blade using xda premium Click to expand... Click to collapse Already changed the png images and inverted the text color in desk.xml but the changes don't take effect. Also experiencing a lot of lag when using the icon picker feature. The list stops displaying icons towards the end as well. Anyone else having this issue? I guess I have to go the Theme Factory route...
Package name problem~ 4 May 2012 >> I solved this problem by myself, Thank you Thank you for your post! NOW I am trying to make my own theme and release it on the Android Market. But it overwrite over and over when testing on my phone. I think it should not overwrite on the other theme, but it does all the time. I also had changed 'package name' on 'Manifest' file, but same problem happened. It just kept overwriting on the other theme that I made and installed on the phone. Thank you
I'm looking for some Eclipse help. I load my theme in Eclipse and have had no probs exporting it and getting it to my tablet. All of a sudden now, when I change some program icons and rebuild the apk, the old icons are still being built, not the ones I changed in the HDPI folder. I looked through Eclipse to see if there was a way to clean temp files or cache, but don't know enough about the program to fix this. Any help would be appreciated.
Create a theme? Woghh... That's what I want.. And this thread really helped me Thx bro
[ICONS][GUIDE] Creating Mask Based Icon Themes (with Example)
I've only created two icon packs, but they seem to work, so I'll take you through my process. The first thing to research is how mask based icons work in general. There's a dearth of good information, but I did find the Icons Special Features section of the ADW Theming Guide to be useful. Alternatively, you can follow along and examine my images to gain an understanding of what I've done. Let's proceed. I began with mathur's Icon-Pack Template, but I've modified it to fit my needs by removing unnecessary bits and the parts relating to non-mask based icon packs. See the attached example, Crinkle.zip Once you've downloaded Crinkle.zip and imported the code into eclipse, there are several things you'll need to alter: First, you must rename the package. This can be done by doing one (or both) these actions: [project (context menu)] > Android Tools > Rename Application Package [package (context menu)] > Refactor > RenameSecond, ensure the correct scale factor. This can be found in two places: assets / appfilter.xml res / xml / appfilter.xmlThird, make sure your informational strings are correct. There are two locations: res / values / strings.xml res / values / theme_config.xmlFourth, and most important, add your own icons. These can be found in res / drawable-xhdpi, and they are: icon.png - the application icon iconback.png - the background image iconmask.png - the transparency / opacity mask iconupon.png - the overlay imageNow test it out. My finished icon pack is live on Google Play under the title Crinkle Icon Theme. Enjoy!
This looks great, but how would you create a mask for making all the icons black and white? Something like this: com.seangrondin.icons.filmstripdesaturate (sorry i can't post links yet ) I want to make a sepia themed icon mask. Thanks
error Also, I'm getting an error as soon as I import. Is there a way to make this target api 10 instead of api 19?
1rdc said: This looks great, but how would you create a mask for making all the icons black and white? Something like this: com.seangrondin.icons.filmstripdesaturate (sorry i can't post links yet ) I want to make a sepia themed icon mask. Thanks Click to expand... Click to collapse I looked into it a bit, and here's what I've discovered. If you include a res/xml/shader.xml file, you will be able to affect the color in at least Apex and Nova. I found a fairly detailed explanation that should help you get started. I will soon update the original post to include more details about this, as well as a cleaner icon pack framework.
How do I make it compatible with Smart Launcher? The icon pack applies but the shader doesn't work and the theme doesn't show up under "Themes"
[Icon pack][Material][Flat][OpenSource] Ycons 1.0
Hey everyone, I've decided to share my personal icon pack. I've personally designed each icon using Inkscape and built the apk. I've made it because I was annoyed by other icon packs always lacking some icons that I wanted. Many icons (like those of google apps) look like the originals, just without the shadows. My icon pack doesn't have many icons (about 100). The interesting thing is that I'm sharing also the source code to build the .apk (using Eclipse) and the .svg files to modify the existing icons/create new ones (using Inkscape), so that you can create your own personal icon pack. The icons are for FHD screens, so 192x192. You can make them larger by exporting again the .svg files. Atteched below you can file the apk file, the .zip source and some examples. You can reuse and modify this app, just give me credit. No requests please: I uploaded the source of the apk file and the icon svg files. If you want to add an icon just do it on your own. Suggestion: to add a new icon you have to modify appfilter.xml, drawable.xml, iconpack.xml, add the icon in the res folder and then compile.
enryea123 said: Hey everyone, I've decided to share my personal icon pack. I've personally designed each icon using Inkscape and built the apk. I've made it because I was annoyed by other icon packs always lacking some icons that I wanted. Many icons (like those of google apps) look like the originals, just without the shadows. My icon pack doesn't have many icons (about 100). The interesting thing is that I'm sharing also the source code to build the .apk (using Eclipse) and the .svg files to modify the existing icons/create new ones (using Inkscape), so that you can create your own personal icon pack. The icons are for FHD screens, so 192x192. You can make them larger by exporting again the .svg files. Atteched below you can file the apk file, the .zip source and some examples. You can reuse and modify this app, just give me credit. No requests please:I uploaded the source of the apk file and the icon svg files. If you want to add an icon just do it on your own. Suggestion: to add a new icon you have to modify appfilter.xml, drawable.xml, iconpack.xml, add the icon in the res folder and then compile. Click to expand... Click to collapse Thanks for this Open Source Project!
A few questions Thanks a lot for this project. I could finally fulfill my dream of making my own icon pack. I have a few questions, though. I don't understand what a few files are foo, in the project. It'd be great if you could explain thier function. The list of the files: Values: res/values/bools.xml [I see those are some booleans in there, but, when are they ever used?] res/values/colors.xml [Those state the theme colours, but, where's the style used?] res/values/dimens [No idea what this folder does] res/values/styles.xml [Its stating the themes of the app, but, again, are those used anywhere?] Assets: assets/app_func_theme.xml [What does this file do?] assets/desk.xml [What does this file do?] assets/themecfg.xml [What does this file do?] Drawable: res/drawable/grid_selector.xml [I guess, it determines how the list of icons is presented, but, it doesn't work in all launchers, right? I mean, in Nova launcher, I didn't get any grid, I got one in ADW though.] res/drawable/square_over.xml [It's used in the grid_selector.xml file, but, how's it affecting the app in any way?] I don't intend to be mean or offensive, but, I am a very newbie Android developer and thus, probably didn't understand what these files are doing. It'd be great if you can clear this out for me. Once again, thanks a lot for the source code!