Я разработал Android LWP, используя RenderScript. Теперь я хочу добавить Setting page, и я использую Preferences для сохранения значений параметров.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 для обновления своего контента? О статических значениях, так что мы можем получить доступ к этим значениям, но как снова вызвать/вызывать метод draw из onPreferenceChangedListener? Мы не можем просто вызвать Car View mView = new CarView (это); setContentView (MView); изнутри onPreferenceChangedListener. – rxlky
В вашей деятельности на автомобиле вы также можете зарегистрировать другой onPreferenceChangedListener в onResume() и отменить регистрацию в onPause(). У меня нет опыта работы с RenderScript, но я полагаю, что ваш слушатель может использовать класс Allocation для отправки ваших новых значений в собственный код. Я не знаю, как структурирована ваша анимация, но, вероятно, более чистая настройка метода рисования для чтения настроек из статических переменных в каждом кадре и, соответственно, корректировки с операторами if, а не для перестройки представления. Поэтому вам не нужно сообщать о том, что есть новые значения. – Tenfour04
Да, на самом деле у меня нет проблем с onPreferenceChangedListener. Теперь я просто не знаю, как восстановить/перерисовать/обновить метод рисования renderscript ... Я все равно использую файл .rs. – rxlky