Сохранение настроек бегунков и кнопок

Сегодня я потратил нормально времени на то, чтобы сделать прогрессивный бегунок для ISO. Задача заключалась не только в том, чтобы ограничить настройку ISO на величины, которые разрешает аппарат. Но и сделать так, чтобы первые значение нарастали медленно и к 800 ускорялись. Также для ISO до 800 должно было быть отведено 2/3 из всего хода.

У меня получилось.

Еще некоторое время я потратил на то, чтобы конвертировать значение ISO в положение бегунка. И тут я осознал, что тратил время зря. А именно, с бегунками всегда есть проблема в том, что они могут объявится позже, чем доступны данные для установки бегунка. Моя программа сохраняет значения, которые настроил пользователь, и при следующем открытии восстанавливает установки.

Сегодня я осознал: каким же лохом надо быть, чтобы сохранять значения параметров вместо сохранения значений кнопок и бегунков.

А именно, если я укажу всем своим бегункам максимальное значение 10000, то мне хватит за глаза такой точности для любой настройки, на любом экране. И если я буду сохранять значение бегунка, то у меня не будет проблемы сразу установить его в это значение, а для установки параметров пересчитать значение бегунка в соответствующее значение параметра.

Казалось бы, проще простого это понять уже в самом начале. Но не мне.  В результате у меня правильно работает бегунок баланса белого. А положения бегунков ISO и фокуса устанавливаются с помощью обратных функций в момент инициализации приложения. Тупость жеж? При очевидном простом решении. И при том, что функции пересчета из бегунка в значение уже есть. Они работают при изменении положения бегунка.

Вывод: правильно сохранять значения кнопок, положение бегунков, регуляторов, все, что касается интерфейса. И потом на основании этих данных пересчитывать значения в нужные. Тогда не будет проблем с тем, когда программа как бы уже работает, а View еще не готов.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.