Come faccio a impostare un nuovo sfondo in base alla scelta dell'utente nelle impostazioni?

StackOverflow https://stackoverflow.com/questions/8317170

Domanda

sto usando AndEngine per creare una carta da parati dal vivo e SharedPreferences per le impostazioni.

Ecco il mio file XML che ospita le diverse impostazioni che un utente può scegliere per il live wallpaper:

<?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="Background Image"
           android:summary="Set the background image for the wallpaper"
           android:key="listPref"
           android:defaultValue="1"
           android:entries="@array/background"
           android:entryValues="@array/background_values" /> 
        </PreferenceCategory>
</PreferenceScreen>

I miei sguardi @array come questo:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string-array name="background">
    <item>Background 1</item>
    <item>Background 2</item>
</string-array>

<string-array name="background_values">
    <item>1</item>
    <item>2</item>
</string-array>

</resources>

La mia attività principale carta da parati usa questo per verificare se un utente ha scelto una nuova impostazione:

    public void onSharedPreferenceChanged(SharedPreferences pSharedPrefs, String pKey)
    {            

        if (prefs.getString("listPref", "Background 1").equals(2))
                {
            Toast.makeText(this, "test", Toast.LENGTH_LONG).show();

    final Scene scene = new Scene();
    final AutoParallaxBackground autoParallaxBackground = new AutoParallaxBackground(
                    0, 0, 0, 5);
    autoParallaxBackground.attachParallaxEntity(new ParallaxEntity(2.7f,
                    new Sprite(0, 0, this.mAutoParallaxCustomBackground)));
    scene.setBackground(autoParallaxBackground);
                }
    }

La mia domanda è ... diciamo che ho 10 sfondi diversi tra cui scegliere: Priorità 1, 2 Sfondo, Sfondo 3 ... ecc, dovrò continuare a fare se Else come nel metodo di cui sopra per essere in grado di prendersi cura di tutti gli sfondi nelle impostazioni? O mi manca un qualche passo? Ci deve essere un modo più semplice per capire quale sfondo l'utente ha fatto clic nelle impostazioni.

Devo fare qualcosa con le 'background_values' nel mio file XML?

E sì, mi rendo conto che la mia affermazione Se non è corretta, ma non ho ancora capito come farlo funzionare correttamente.

È stato utile?

Soluzione

Trovato il soulution:

ha creato questo:

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

Aggiunto:

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

(BuildScene ()) è una chiamata dentro la mia onLoadScene () metodo.)

Poi ho personalizzato codificato Se, Else all'interno del BuildScene () per capire quale opzione l'utente sta utilizzando, e poi applicato la nuova immagine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top