使用SharedPreference实现首选项,适用于Android动态壁纸

时间:2010-09-02 05:40:20

标签: java c++ android wallpaper

好吧,我需要帮助添加设置来选择要显示的纹理 - 你应该能够说出我的意思,因为已经有两个设置了。我有设置设置的gui以及我无法弄清楚如何实现它的活动。如果你可以帮助我,我会在应用程序的设置和市场信息中为你提供信用。以及您的姓名,网站或视频中的YouTube视频频道。可在此处找到youtube.com/motodroidhelpandinfo。我有超过1,200个订阅者。提前谢谢。

这是我的偏好活动:

package quotesandothers.livewallpaper.quotesandothers;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Settings extends PreferenceActivity implements
        SharedPreferences.OnSharedPreferenceChangeListener {

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        getPreferenceManager().setSharedPreferencesName(
                livewallpaper.PREFERENCES);
        addPreferencesFromResource(R.xml.wallpaper_settings);
        getPreferenceManager().getSharedPreferences()
                .registerOnSharedPreferenceChangeListener(this);
    }

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

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

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {}
}

这是我在主要活动中实现它的尝试。注意我无法适应整个活动的相关内容。此外,我希望设置在您可以看到的纹理之间切换。我也使用andengine.org作为主干。

@Override
public void onLoadResources() {
    preferences = PreferenceManager.getDefaultSharedPreferences(this);
    preferences.registerOnSharedPreferenceChangeListener(this);
    this.mTexture = new Texture(2048, 2048, TextureOptions.DEFAULT);
    this.mParallaxLayerMid1 = TextureRegionFactory.createFromAsset(
            this.mAutoParallaxMotivationalTexture, this, "gfx/middle1.png",
            0, 320);
    this.mParallaxLayerTop = TextureRegionFactory.createFromAsset(
            this.mAutoParallaxMotivationalTexture, this, "gfx/top.png", 0,
            0);
    this.mParallaxLayerTop2 = TextureRegionFactory.createFromAsset(
            this.mAutoParallaxMotivationalTexture, this, "gfx/top2.png", 0,
            173);
    this.mParallaxLayerMid2 = TextureRegionFactory.createFromAsset(
            this.mAutoParallaxMotivationalTexture, this, "gfx/middle2.png",
            0, 450);
    this.mParallaxLayerLow1 = TextureRegionFactory.createFromAsset(
            this.mAutoParallaxMotivationalTexture, this, "gfx/lower1.png",
            200, 574);
    this.mParallaxLayerLow2 = TextureRegionFactory.createFromAsset(
            this.mAutoParallaxMotivationalTexture, this, "gfx/lower2.png",
            0, 740);
    this.mEngine.getTextureManager().loadTextures(this.mTexture,
            this.mAutoParallaxMotivationalTexture);
    this.mTexture = new Texture(2048, 2048, TextureOptions.DEFAULT);
    this.mParallaxLayerTopInspired = TextureRegionFactory.createFromAsset(
            this.mAutoParallaxInspirationalTexture, this,
            "gfx/topinspired.png", 0, 0);
}

public void OnSharedPreferenceChanged(SharedPreferences prefs, String key) {}

1 个答案:

答案 0 :(得分:0)

那里的事情看起来不错。

我的应用程序只有一个区别,我以立方体壁纸为例。

您获得偏好的这一行对我来说有所不同。

preferences = PreferenceManager.getDefaultSharedPreferences(this);

矿:

preferences = myWallpaper.this.getSharedPreferences(SHARED_PREFS_NAME, 0);

试一试,看看会发生什么。