Kann nicht Holen Sie Einstellungen, um den Bildschirm für live wallpaper
Ich soll zu Einstellungen hinzufügen, um eine live-wallpaper, die ich erstellt. Ich vermisse etwas sehr grundlegendes darüber, wie SharedPreferences Arbeit. Die code-und XML basieren auf der cube live wallpaper Beispiel und ich kann nicht herausfinden, was ich falsch gemacht habe. Mein problem ist, dass keine Schaltfläche "Einstellungen", zeigt sich, wenn ich wähle meine live wallpaper aus der Liste. Nur die "Set Wallpaper" - Taste wird angezeigt. Ich vermute, dass ich etwas verkorkst, die in der XML.
Dies ist eine sehr einfache live-wallpaper, die ich gemacht, nur um zu täuschen um mit Einstellungen. Alle es tut, ist, den hintergrund entweder blau oder grün (und das Teil funktioniert).
Was ich glaube, um die relevanten code-und xml folgt:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.BGWallpaper"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<uses-feature android:name="android.software.live_wallpaper" />
<application
android:icon="@drawable/icon" android:label="@string/AppName">
<service
android:icon="@drawable/icon"
android:label="@string/AppName"
android:name="com.android.BGWallpaper.BlueGreen"
android:permission="android.permission.BIND_WALLPAPER" android:debuggable="false">
<intent-filter android:priority="1">
<action android:name="android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data android:name="android.service.wallpaper" android:resource="@xml/bg" />
</service>
<activity
android:label="BGSettings"
android:name="com.android.BGWallpaper.BGPrefs"
android:theme="@android:style/Theme.Light.WallpaperSettings"
android:exported="true">
</activity>
</application>
</manifest>
Preferences.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="Title Preference"
android:key="BGSettings">
<ListPreference
android:key="background"
android:title="Background Title"
android:summary="Background Summary"
android:entries="@array/BackgroundChoices"
android:entryValues="@array/BackgroundChoices" />
</PreferenceScreen>
bg.xml
<?xml version="1.0" encoding="utf-8"?>
<wallpaper
xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@drawable/icon"/>
BlueGreen.java (die wallpaper-service)
public class BlueGreen extends WallpaperService
{
public static final String strSharedPrefs="BGSettings";
@Override
public Engine onCreateEngine()
{
return new BGEngine();
}
class BGEngine extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener
{
private SharedPreferences msPrefs;
private final Runnable mDraw = new Runnable()
{
public void run()
{
draw();
}
};
BGEngine()
{
msPrefs = BlueGreen.this.getSharedPreferences(strSharedPrefs, MODE_PRIVATE);
msPrefs.registerOnSharedPreferenceChangeListener(this);
onSharedPreferenceChanged(msPrefs, null);
}
}
//...
}
BGPrefs.java:
public class BGPrefs extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener
{
@Override
protected void onCreate(Bundle icicle)
{
super.onCreate(icicle);
getPreferenceManager().setSharedPreferencesName(BlueGreen.strSharedPrefs);
addPreferencesFromResource(R.xml.preferences);
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
//...
}
So was bin ich?
Auch ein Teil meiner XML/code wird gegessen, indem Sie die automatische Formatierung. Gibt es einen Weg, um es zu behandeln, einen block von text als wörtliche, damit es nicht formatieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem bg.xml...
android:settingsActivity wird der Parameter, die Sie benötigen, um gegen Ihre live wallpaper XML-Datei.
Glück 🙂