Question

I built my first Android app.

It is a Live Wallpaper designed for 2.2.

When I press and hold the screen, select Wallpapers and then select Live Wallpapers, my live wallpaper has what looks like a default icon with the name of my live wallpaper overlaid.

How do I set this icon?

My manifest file has an application icon specified as @drawable/icon

Update

I think I need to add some info to this question as it poorly describes my problem (sorry).

  1. I have all the res/drawable-[hml]dpi/ icons. I named them all icon.png.
  2. My manifest file contains <application android:label="@string/app_name" android:icon="@drawable/icon">
  3. I have also tried creating a 48x48 icon in res/drawable/ called icon.png.
  4. I have also tried explicitly adding icons in other manifest tags if they are allowed. eg. service, activity, intent-filter (It should be obvious that I don't know how this manifest file really works, so I was trying anything)
  5. In Manage Applications, the icon is displayed correctly.
  6. When selecting the Live Wallpaper, the icon is not displayed correctly.
  7. mdpi icon is 48x48, ldpi icon is 36x36 and hdpi icon is 72x72
Was it helpful?

Solution

In order to see an icon in the live wallpaper menu, you need to set the android:thumbnail attribute for the applications <Wallpaper> tag. This will normally be found in the XML file corresponding to the class that extends WallpaperService.

Looking at the CubeLiveWallpaper sample application provided with the SDK, we see this tag to be located in cube1.xml and cube2.xml. A modified version below displays the icon thumb.png located in res/drawable and provides a description defined in strings.xml

<wallpaper 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:thumbnail="@drawable/thumb"
    android:description="@string/description"
    android:settingsActivity="com.example.android.livecubes.cube2.CubeWallpaper2Settings"
/>

NOTE: this works regardless of file extension, assuming that the format is a supported type - jpg. png etc

OTHER TIPS

You can also change @drawable/icon to @drawable/<youricon>

I've set <application android:icon="@drawable/icon"/> in my AndroidManifest.xml and it's working fine for each icon.png I'm using in the

/res/drawable- :== hdpi | ldpi | mdpi

folders.

Create your icon and save it in res/drawable/icon.png. You can also use icon.jpg, icon.gif, or icon.bmp.

inside the res/drawables directories you will see icon.png. you change this file to be the icon you want. the hdpi are for the devices with high density, like the nexus one, or evo. mdpi is for devices like the myTouch or G1

More info about resolution can be found in this thread.

This section especially:

...The resolution used seems to be a lot larger than the launcher icon resolution, using 48 for medium or 72 for high gives a very blurred image on both the emulator and real devices, leading me to think there is some scaling going on...

Animated .GIF file is not supported as Application launcher icon. Gif icon wont give you any compluation error but animation wont work.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top