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

4

2 回答 2

0

我不使用 RenderScript,但在我的动态壁纸中,我为我的所有设置保留了一个静态变量类,以及一个将我的设置传输到该类的 OnPreferenceChangedListener。在动态壁纸的绘制方法中,我只是提取了这些静态变量的当前值。此外,当您的动态壁纸首次启动时,您需要告诉设置类将其所有变量更新为当前值。

于 2013-08-23T18:26:49.520 回答
0

终于设法修复它......技术没有问题。onSharedPreferenceChanged 上的更新位置也是正确的。但我现在设法完美地重绘一切。

于 2013-11-15T07:30:58.390 回答