我已經使用RenderScript開發了Android LWP。現在我想添加設置頁面並使用首選項來保存選項值。Android LWP,如何在設置首選項更改後刷新RenderScript對象?
EG。初始對象數量是10。然後用戶可以改變對象的數量爲20。
我不能更新/刷新/復位/調用的renderScript與新設定再生。怎麼做?
我已成功達到onSharedPreferenceChanged,但如何調用它以再生LWP新設置只需用戶點擊之後?
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
//How to force the renderscript to update here
}
其實,我需要知道的是「如何刷新/清除所有繪製的對象上的renderScript?」 因爲當設置已經改變了,我需要再次重新繪製的對象....
我已成功地走這麼遠的最好的事情是設置對象的數量在聽者這樣
私有類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();
}
}
但我得到 「雙重」 繪製的對象。在設置新數量的對象之前,我需要先清除現有對象。
EG。初始物體的數量是10。然後用戶可以更改的對象數量爲5
我得到了什麼仍然是10個對象....有5個對象被繪製兩次/複製在它的上面。因此,由於繪製了這個覆蓋圖,所以有5個對象顏色較深。
OnPreferenceChangedListener是叫MyPreferenceActivity.java另一個類。所以當設置被改變時,這被成功調用。但如何使/調用CarView類來刷新其內容?關於靜態值,好吧,我們可以訪問這些值,但如何從onPreferenceChangedListener再次觸發/調用draw方法?我們不能直接調用Car View mView = new CarView(this);的setContentView(MVIEW);來自onPreferenceChangedListener。 – rxlky
在您的Car活動中,您還可以在onResume()中註冊另一個onPreferenceChangedListener,並在onPause()中註銷它。我沒有任何RenderScript的經驗,但我認爲你的偵聽器可以使用Allocation類將新值發送給本機代碼。我不知道你的動畫是如何構造的,但是設置draw方法可以從每個幀的靜態變量中讀取設置並根據if語句進行相應調整,而不是重新構建視圖,這可能會更清晰。所以你的動畫不需要被告知有新的價值。 – Tenfour04
是的,其實我沒有onPreferenceChangedListener問題。現在,我只是不知道如何重新生成/重繪/刷新renderscript繪製方法...無論如何我使用.rs文件。 – rxlky