Как создать активность настроек для Android Live Wallpaper
Как создать активность настроек в живых обоях, как это?
Пример изображения
Я создал настройки активности только с простым текстом и столкнулся с некоторыми проблемами.
Первая проблема заключается в том, что я не могу использовать XML файл макета для этого действия.
Во-вторых: я не могу установить каталог на значок системы (drawable/ic_menu_more
), когда я пытаюсь построить эту программу программно.
Также мне нужно будет использовать SeekBar.
Я буду очень рад, если вы поможете мне =)
Ответы
Ответ 1
Для использования значка системы:
<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>
В 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"/>
Ответ 2
Пример LiveWallpaper на сайте Android Dev (теперь кэшированный) проходит именно это: http://web.archive.org/web/20111229075658/http://developer.android.com/resources/samples/CubeLiveWallpaper/index.html
Более конкретно: http://web.archive.org/web/20120104043512/http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/cube2/CubeWallpaper2Settings.html
Короче:
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) {
}
}