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 つのオブジェクトの色が濃くなっています。