2

RenderScript を使用して Android LWP を開発しました。次に、設定ページを追加したいと思います。設定を使用してオプション値を保存します。

例えば。最初のオブジェクト数は 10 です。その後、ユーザーはオブジェクト数を 20 に変更できます。

RenderScript を更新/リフレッシュ/リセット/リコールして、新しい設定で再生成することができません。どうやってするの?

onSharedPreferenceChanged までは管理しましたが、ユーザーがクリックした直後に新しい設定で LWP を再生成するために呼び出す方法は?

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
//How to force the renderscript to update here
}    

実際、私が知る必要があるのは、「レンダリング スクリプトで描画されたオブジェクトを更新/クリアする方法は?」ということです。設定を変更すると、オブジェクトを再描画する必要があるため....

私がこれまでに行った最高のことは、リスナーのオブジェクトの量をこのように設定することです

プライベート クラス SPListener は、SharedPreferences.OnSharedPreferenceChangeListener を実装します {

@Override
public void onSharedPreferenceChanged(
        SharedPreferences sharedPreferences, String key) {
    // TODO Auto-generated method stub

    OBJ_COUNT = Integer.parseInt(Utility.getNoOfObjects(mContext));

    mScript.set_gObjectsCount(OBJ_COUNT);           
    mScript.invoke_updateObjects();


}

}

しかし、「二重」の描画オブジェクトが得られました。新しい量のオブジェクトを設定する前に、まず既存のオブジェクトをクリアする必要があります。

例えば。最初のオブジェクト数は 10 です。その後、ユーザーはオブジェクト数を 5 に変更できます。

私が得たのはまだ10個のオブジェクトです....5個のオブジェクトが2回描画され、その上に複製されています。したがって、このオーバーレイが描画されているため、5 つのオブジェクトの色が濃くなっています。

4

2 に答える 2

0

私は RenderScript を使用しませんが、私のライブ壁紙では、すべての設定に対して静的変数のクラスと、設定をそのクラスに転送する OnPreferenceChangedListener を保持しています。ライブ壁紙の draw メソッドでは、これらの静的変数の現在の値を取得するだけです。また、ライブ壁紙を初めて起動するときに、すべての変数を現在の値に更新するように設定クラスに指示する必要があります。

于 2013-08-23T18:26:49.520 に答える