Comment puis-je créer un nouveau fond d'écran basé sur le choix de l'utilisateur dans les paramètres?

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

Question

J'utilise AndEngine pour créer un fond d'écran en direct et SharedPreferences pour les réglages.

Voici mon fichier XML qui héberge les différents paramètres d'un utilisateur peut choisir le fond d'écran en direct:

<?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>

Mes regards @array comme ceci:

<?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>

Ma principale activité de fond d'écran utilise pour vérifier si un utilisateur a choisi un nouveau paramètre:

    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);
                }
    }

Ma question est ... Disons que j'ai 10 arrière-plans différents à choisir: Contexte 1, Contexte 2, Contexte 3 ... etc., dois-je continuer à faire des déclarations Si d'autre comme dans la méthode ci-dessus pour être en mesure de prendre soin de tous les milieux dans les paramètres? Ou suis-je manque un endroit étape? Il doit y avoir un moyen plus facile de savoir quel fond l'utilisateur a cliqué dans les paramètres.

Dois-je faire quelque chose avec les « background_values ??» dans mon fichier XML?

Et oui, je me rends compte de ma déclaration est incorrecte Si mais je l'ai pas encore compris comment le faire fonctionner correctement.

Était-ce utile?

La solution

Nous avons trouvé le Soulution:

Créé ceci:

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

Ajout:

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

(BuildScene ()) est un appel à l'intérieur de ma méthode onLoadScene ().)

Alors je viens personnalisé Si codé, déclarations autre à l'intérieur de la méthode BuildScene () pour savoir quelle option l'utilisateur est actuellement à l'aide, puis appliqué la nouvelle image.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top