Frage

Ich benutze Andengine, um ein Live -Hintergrundbild zu erstellen, und habe alles auf den richtigen Weg, um das Einstellungsmenü zu finden. Ich bin mir einfach nicht sicher, wie ich tatsächlich die aktuellen Bilder ausschaltet, die standardmäßig mit Bildern geladen werden, die Benutzer im Menü Einstellungen auswählen können.

Beispiel: Standardmäßig lädt das Programm das Hintergrundbild2 und das Bild mit oberem Ebenen 1. Wenn ein Benutzer das Hintergrundbild 3 über das Einstellungsmenü verwendet, möchte ich Image3 im Bild2 ersetzen.

Hier ist mein Hauptcode:

public class PhysicsWallpaperActivity extends BaseLiveWallpaperService implements SharedPreferences.OnSharedPreferenceChangeListener {
    // ===========================================================
    // Constants
    // ===========================================================


    public static final String SHARED_PREFS_NAME = "preferences";
    private static final int CAMERA_WIDTH = 720;
    private static final int CAMERA_HEIGHT = 480;

    // ===========================================================
    // Fields
    // ===========================================================

    private Camera mCamera;


    private BitmapTextureAtlas mAutoParallaxBackgroundTexture;

    private TextureRegion mParallaxLayerBack;
    private TextureRegion mParallaxLayerFront;

    private SharedPreferences prefs;




    @Override
    public org.anddev.andengine.engine.Engine onLoadEngine() {
            this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
            return new org.anddev.andengine.engine.Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));
    }

    @Override
    public void onLoadResources() {
        prefs = PhysicsWallpaperActivity.this.getSharedPreferences(SHARED_PREFS_NAME, 0);
        prefs.registerOnSharedPreferenceChangeListener(this);


            BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");


            this.mAutoParallaxBackgroundTexture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);
            this.mParallaxLayerFront = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "image1.png", 0, 800);
            this.mParallaxLayerBack = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "image2.jpg", 0, 0);

            this.mEngine.getTextureManager().loadTextures(this.mAutoParallaxBackgroundTexture);
    }

    @Override
    public Scene onLoadScene() {
            this.mEngine.registerUpdateHandler(new FPSLogger());

            final Scene scene = new Scene();
            final AutoParallaxBackground autoParallaxBackground = new AutoParallaxBackground(0, 0, 0, 5);
            autoParallaxBackground.attachParallaxEntity(new ParallaxEntity(-10.0f, new Sprite(0, CAMERA_HEIGHT - this.mParallaxLayerBack.getHeight(), this.mParallaxLayerBack)));
            autoParallaxBackground.attachParallaxEntity(new ParallaxEntity(0.0f, new Sprite(0, CAMERA_HEIGHT - this.mParallaxLayerFront.getHeight(), this.mParallaxLayerFront)));
            scene.setBackground(autoParallaxBackground);

            return scene;
    }

....
....

    @Override
    public void onSharedPreferenceChanged(SharedPreferences pSharedPrefs, String pKey)
    {

    }


}    

Ich bin mir nicht sicher, was danach hinzugefügt werden muss:

prefs = PhysicsWallpaperActivity.this.getSharedPreferences(SHARED_PREFS_NAME, 0);
        prefs.registerOnSharedPreferenceChangeListener(this);

Hier ist meine Präferenz.xml -Datei, die das tatsächliche Einstellungsmenü enthält:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory
                android:title="Main Settings">
                 <ListPreference
           android:title="List Preference"
           android:summary="This preference allows to select an item in an array"
           android:key="listPref"
           android:defaultValue="1"
           android:entries="@array/background"
           android:entryValues="@array/background_values" /> 
        </PreferenceCategory>
</PreferenceScreen>

Ich denke, meine Hauptfrage ist, wie ich das neue Bild, das der Benutzer ausgewählt hat, und dann auf das eigentliche Hintergrundbild lade.

War es hilfreich?

Lösung

Fand die Soulution:

Erstellt dies:

    @Override
    public void onSharedPreferenceChanged(SharedPreferences pSharedPrefs, String pKey)
    {           
            settingsChanged = true;
    }

Hinzugefügt:

    @Override
    public void onResume(){
        super.onResume();
        if(settingsChanged)
        {
                BuildScene();
                settingsChanged = false;
        }
    }

(Buildscene ()) ist ein Aufruf in meiner Onloadscene () -Methode.)

Dann habe ich nur benutzerdefiniert, wenn Anweisungen in der Methode Buildscene () herausgefunden werden, welche Option der Benutzer derzeit verwendet, und dann das neue Bild angewendet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top