設定でのユーザーの選択に基づいて新しい壁紙を設定するにはどうすればよいですか?

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

質問

Andengineを使用して、ライブの壁紙と設定の共有予約を作成しています。

これが私の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);
                }
    }

私の質問は...バックグラウンド1、バックグラウンド2、バックグラウンド3 ...などから選択できる10の異なる背景があるとしましょう。設定のすべての背景について?それとも、どこかで一歩を踏み出しましたか?ユーザーが設定でクリックした背景を把握するための簡単な方法が必要です。

XMLファイルに「background_values」を使用して何かをしなければなりませんか?

そして、はい、私は自分のIFステートメントが間違っていることに気付きましたが、それを適切に機能させる方法をまだ理解していません。

役に立ちましたか?

解決

ソウリューションを見つけました:

これを作成しました:

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

追加した:

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

(buildscene())は、onloadscene()メソッド内の呼び出しです。)

次に、buildscene()メソッド内の他のステートメントをカスタムコーディングして、ユーザーが現在使用しているオプションを把握し、新しい画像を適用しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top