¿Cómo configura un nuevo fondo de pantalla basado en la elección del usuario en la configuración?

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

Pregunta

Estoy usando AndEngine para crear un fondo de pantalla en vivo y compartidos para la configuración.

Aquí está mi archivo XML que aloja las diferentes configuraciones que un usuario puede elegir para el fondo de pantalla en vivo:

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

Mi @array se ve así:

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

Mi actividad principal de fondo de pantalla usa esto para verificar si un usuario ha elegido una nueva configuración:

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

Mi pregunta es ... Digamos que tengo 10 antecedentes diferentes para elegir: fondo 1, fondo 2, fondo 3 ... etc., tendré que seguir haciendo si más sean declaraciones como en el método anterior para poder preocuparnos ¿Para todos los fondos en la configuración? ¿O me estoy perdiendo un paso en alguna parte? Debe haber una manera más fácil de averiguar en qué fondo el usuario ha hecho clic en la configuración.

¿Tengo que hacer algo con 'background_values' en mi archivo XML?

Y sí, me doy cuenta de que mi declaración IF es incorrecta, pero aún no he descubierto cómo hacer que funcione correctamente.

¿Fue útil?

Solución

Encontró la alma:

Creó esto:

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

Adicional:

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

(Buildscene ()) es una llamada dentro de mi método OnloadScene ().)

Luego, simplemente me codifico en las declaraciones de si bien, dentro del método BuildScene () para determinar qué opción está utilizando actualmente el usuario y luego apliqué la nueva imagen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top