10

How to create a settings activity in live wallpaper like this?

Example Picture

I've built settings activity with only a simple text and faced some problems. The first problem is that I can't use layout XML file for this activity. The second: I can't set the directory to system icon (drawable/ic_menu_more) when I try to build that activity programmly. Also I will need do use SeekBar.

I will be very pleased, if you help me =)

Finesse
  • 9,793
  • 7
  • 62
  • 92
  • 1
    There is a chapter on this subject on developer.android: http://developer.android.com/guide/topics/ui/settings.html – Warpzit Jun 25 '13 at 09:24

2 Answers2

9

For using system icon:

<service android:name="com.livewallpaper.warm.LiveWallpaper"
            android:label="@string/app_name"
            android:icon="@drawable/ic_menu_more">

            <intent-filter>
                <action android:name="android.service.wallpaper.WallpaperService" />
            </intent-filter>
            <meta-data android:name="android.service.wallpaper"
                android:resource="@xml/livewallpaper" />

        </service>

In XML-livewallpaper.xml:

<?xml version="1.0" encoding="utf-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
    android:settingsActivity="com.livewallpaper.warm.LiveWallpaperSettings"
    android:thumbnail="@drawable/ic_menu_more"/>
Mohit Verma
  • 3,025
  • 1
  • 20
  • 36
1

The LiveWallpaper Example on the Android Dev site (now cached) goes through exactly that: http://web.archive.org/web/20111229075658/http://developer.android.com/resources/samples/CubeLiveWallpaper/index.html

More specifically: http://web.archive.org/web/20120104043512/http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/cube2/CubeWallpaper2Settings.html

In short:

public class CubeWallpaper2Settings extends PreferenceActivity
implements SharedPreferences.OnSharedPreferenceChangeListener {

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    getPreferenceManager().setSharedPreferencesName(
            CubeWallpaper2.SHARED_PREFS_NAME);
    addPreferencesFromResource(R.xml.cube2_settings);
    getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(
            this);
}

@Override
protected void onResume() {
    super.onResume();
}

@Override
protected void onDestroy() {
    getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(
            this);
    super.onDestroy();
}

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        String key) {
}
}
TryTryAgain
  • 7,632
  • 11
  • 46
  • 82