суббота, 26 марта 2011 г.

Usability. Совет дня – продолжение.

С пару месяцев назад писал про голосование на RSDN на тему использования “читаете ли вы совет дня”. Если в двух словах, то результаты получились неутешительные. Не читаем! Хм, и странно было бы ожидать чего-то другого. В конце того самого поста я обещал рассказать, как я решил эту проблему. Лениво, конечно, ибо когда сам уже разобрался, то трепаться становиться неинтересно. Но надо раздавать долги. Попробую, но раз лениво, то несколько в декларативном стиле.

Сначала расскажу почему.
Никаких советов дня при запуске. Раз пользователь запускает приложение, то у него явно есть какая-то цель, ежеминутная задача. Он попросту не будет читать никаких поучений. В народе это называется проще: “не пизди под руку”.

Никакой модальности. Зачем кнопка ОК? Она что-то делает? Пусть совет дня показывается где-то сбоку припеку. Не требуя от пользователя никаких действий. Совет это же всего лишь рекомендация. Вы же не удивляетесь отсутствию кнопки ОК на объявлении на двери подъезда?

Теперь как сделано в Aml Pages. Скриншот собственно ниже.

Панель советов дня в моей Aml Pages

Отдельная панель: Итак, в Aml Pages я сделал совет дня в виде отдельной панели, a la строки состояния. Такая статусбарного вида панель привычна для пользователя и не требует от него никаких действий, не отвлекает его от работы.

Панель совета  внизу окна: т.к. совет дня информация сугубо вспомогательная, то располагаться она должна все-таки внизу. Все в правилах information flow: главное – слева вверху, второстепенное – внизу и справа. А читаем мы в таком порядке…

Навигация в панели: все-таки некоторыми интерактивными возможностями панель советов должна обладать. Какой-нибудь несложной кнопкой “следующий совет”. Главное никакой модальности. Интересно пользователю? Кликнет. Нет, так нет.

Узнать больше: неплохой идеей оказалось сделать возможность перейти к расширенной информации по тематике конкретного совета, к большей статье, документации или еще чему-то подобному. Никаких велосипедов. Советы дня, имеющую такую связанную тему, показываются как гиперссылка на тему. Надо – кликнут. Плюс во всплывающей подсказке пояснительная информация, что за ссылка и куда. В Aml Pages это ссылки на статьи на сайте. Заметьте господа, это даже не “реклама” в дурном смысле – это то самое, ненавязчивое предложение для пользователя.

Цветовая схема: т.к. все-таки панель советов информационная, то и оформление должно быть в таком же стиле. Не выпендривался – у меня панель советов использует системные цвета всплывающих подсказок (tooltips). Рехех, а) привычно и узнавабельно для пользователя б) сама панель несколько отличается от основной цветовой схемы приложения, что в какой-то степени рано или поздно привлечет его внимание.

Ну, примерно вот так вот. А напоследок один забавный момент. Как я пришел к тому, что панель советов должна быть внизу, и почему в первой версии все-таки панель советов была вверху окна. Однажды, я с грустью заметил и-э-эх, и сколько же пространства у меня пропадает на пустом месте справа от тулбара вверху окна :(. А не херакнуть ли туда какую-нибудь вспомогательно-справочную инфу? С этого и понеслось, и  в конце концов, начав с обычной прорисовки текста прямо на окне, выросло до идеи отдельной панели. Но все-таки вверху окна приложения, с этого ведь все и началось.

Но потом, несколько пользователей обмолвились, что все-таки отключают панель советов. И это навело на мысли.

  • Вверху главного окна расположены панели инструментов. Места там и так немного, поэтому если его не хватает, то под нож идут все вспомогательные моменты. Панель советов, естественно, срубали первой.
  • Не стоит мешать информационную часть и инструментальную. Там где инструменты (тулбары), пользователь мышью частенько работает практически на автомате: мышь туды-сюды, клик и готово. В этот момент пользователь в активной фазе работы – он просто не будет читать всякие дурацкие советы, какие-бы замечательные они не были. У него в этот момент свои и причем совершенно другие заботы. А вот когда он решит отдохнуть, и глаза его устало опустятся… А тут, ух-ты, йопты, инфа. Может быть и заинтересует.

Вот таким вот макаром панель советов дня и переехала вниз главного окна приложения. К слову говоря, больше отключения панели советов не наблюдалось. По какому только поводу пользователи не слали мне скриншоты (баги там, проблемы всякие) – у всех панель советов дня была включена. Сработало, однако :)

Всё, уф! Обещал рассказать про советы дня – сделал. Долги кажись раздал… Ну и понятное дело, идею можно развивать, дотачивать, но все это уже будет на 100 и еще 100 процентов зависеть уже от конкретных задач в конкретном приложении.

Technorati Теги:

понедельник, 14 марта 2011 г.

Пользовательский интерфейс: виртуальный ListView

Об актуальном. Как-то последнее время начинаю все с большей и большей теплотой относиться к виртуальному режиму списка (ListView). Ощущение полного контроля над списком: что, как и когда он отображает – настолько впечатляет, настолько завораживает, что нет слов. Действительно, код поначалу приходится сильно доводить, продумывать, вникать в детали. Но это только поначалу. Зато потом, возникает устойчивое чувство, что все работает как надо, что код “сверкает всеми гранями и бесконечно совершенен в своей продуманности, последовательности, и определенности”.

А по сути-то, в виртуальном списке всего лишь выполняется старинный программерский завет, она же отчасти первая нормальная форма: “данные должны быть определены единожды и однозначно”. Если задаются какие-то значения, то только в одном единственном месте. Какие данные есть в бизнес-слое приложения, те в ListView и отображаются. А не извечный геморрой: что в конкретный момент времени в ListView де-факто, а что в модели, и в какой момент времени данные должны обновляться в пользовательском интерфейсе, и кем это обновление инициируется...

А уж вкупе с механизмом CustomDraw и вовсе наступает окончательный дзэн. Эмулировать из виртуального ListView дерево-подобный элемент управления, с ветками, и прочей дребеденью, но в довесок со всеми преимуществами списка и вовсе становится элементарно. В общем, буду краток (ц) – прёт!

Все ж прав автор статьи по ссылке выше “Все программисты делятся на тех, кто повсеместно применяет виртуальный режим, и тех…” Попробовав единожды, отказываться от подобных плюшек уже и вовсе не хочется.

Technorati Теги: