我已经使用 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 个对象被绘制两次/在其上复制。因此,由于绘制了此叠加层,因此 5 个对象的颜色较深。