Как мне установить новые обои на основе выбора пользователя в настройках? - PullRequest
0 голосов
/ 30 ноября 2011

Я использую AndEngine для создания живых обоев и SharedPreferences для настроек.

Вот мой XML-файл, который содержит различные настройки, которые пользователь может выбрать для живых обоев:

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

Мой @array выглядит так:

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

Моя основная активность обоев использует это, чтобы проверить, выбрал ли пользователь новый параметр:

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

У меня вопрос ... скажем, у меня есть 10 различных фонов на выбор: Фон 1, Фон 2, Фон 3 ... и т. Д., Придется ли мне продолжать делать заявления Else, подобные описанному выше, умеет ухаживать за всеми фонами в настройках? Или я где-то пропускаю шаг? Должен быть более простой способ выяснить, на каком фоне пользователь щелкнул в настройках.

Нужно ли что-то делать с 'background_values' в моем XML-файле?

И да, я понимаю, что мое утверждение If неверно, но я еще не выяснил, как заставить его работать должным образом.

1 Ответ

0 голосов
/ 04 декабря 2011

Найден раствор:

Создано это:

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

Добавлено:

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

(BuildScene ()) - это вызов внутри моего метода onLoadScene ().)

Затем я просто создал пользовательские операторы If, Else внутри метода BuildScene (), чтобы выяснить, какой параметр использует пользователь, а затем применил новое изображение.

...