Разработка виджетов

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

Вообще говоря, дизайн интерфейса виджета столь не ограничивается к Инструкциям по Интерфейсу пользователя Apple как Какао, или приложения Углерода. Несмотря на эту свободу, существуют основные принципы проектирования программного обеспечения, которые должны сопровождаться. Эта глава представляет некоторые инструкции, которые необходимо рассмотреть при создании виджета.

Основные инструкции по дизайну интерфейса

Основная поверхность Вашего виджета является передней стороной (Ваш виджет выводит на экран предпочтения на своей спине). Это - пользователи стороны, распознают и взаимодействуют с большинством.

Следуйте этим инструкциям, поскольку Вы разрабатываете переднюю сторону своего виджета:

Рисунок 8  нарушенный виджет является мастером на все руки, ведущим устройством
A cluttered widget is a jack of all trades, master of none
noneFigure 9
  Три простых виджета, каждый фокусируемый на единственной задаче
Three simple widgets, each focused on a single taskThree simple widgets, each focused on a single task
Рисунок 10  большой виджет монополизирует ценный экран
A large widget monopolizes valuable screen space
spaceFigure
  маленький виджет на 11 А, предоставляет информацию и оставляет комнату для других виджетов
A small widget provides information and leaves room for other widgets
  Цвет рисунка 12 заставляет Ваш виджет выделиться — можно ли определить Календарь?
Color makes your widget stand out—can you spot the Calendar?
Рисунок 13  наступательный виджет – быть тщательным с цветом!
An offensive widget–be careful with color!
  Средства управления Водой рисунка 14 не принадлежат на поверхности Вашего
Aqua controls don’t belong on the face of your widget
widgetFigure
  виджета на 15 А с пользовательскими элементами управления
A widget with custom controls
Рисунок 16  не тратит впустую ценное пространство в Вашем виджете с
Don’t waste valuable space in your widget with advertising
advertisingFigure 17
  Помещенная информация, не жизненно важная для виджета на спине
Put information not vital to the widget on the back

Руководство по проектированию задней стороны виджета

Если Ваш виджет требует конфигурации, можно вывести на экран предпочтения в конце виджета. Вот некоторые подсказки для разработки спины Вашего виджета:

Рисунок 18  нестандартное управление для показа
A non-standard control for showing your widget’s back
backFigure 19 Вашего виджета
  стандартная информационная кнопка — пользователи знают то, что это означает
The standard info button—users know what this means
Рисунок 20  Надлежащее информационное размещение кнопки
Proper info button placement
  Вода рисунка 21 управляет на спине виджета
Aqua controls on a widget’s back
Рисунок 22  Различные фоны различает переднюю и заднюю часть
Different backgrounds distinguish between front and back
  Брендинг рисунка 23 является надлежащим на спине виджета
Branding is appropriate on a widget’s back

Значки панели виджета

Виджеты представлены значком в панели виджета. Размерности ниже определяют стандартный размер значков и тень для значка панели виджета:

Другие подсказки

Следуйте этим советам при разработке и реализации виджета.

Программирование виджета

  • Используйте JavaScript, когда это возможно. Логика анимации и виджета является возможным использованием JavaScript и приводит к более быстрому выполнению и меньшему объему потребляемой памяти.

  • Используйте пользовательские плагины Виджета и WebKit экономно. Плагины добавляют значительную сложность к Вашему виджету и должны только использоваться каждый раз, когда задачей не является возможное использование JavaScript.

  • Избегайте использования апплетов Java, анимаций Flash и фильмов в формате QuickTime. Они - тяжеловес и приводят значительный объем памяти в рабочее состояние.

Падающие тени

Фоны виджета имеют тенденцию обладать падающими тенями. Размерности ниже определяют стандартную падающую тень для виджета:

  • 50%-я непрозрачность

  • Угол на 90 градусов от горизонтали

  • 4 смещения пикселей (расстояние от источника)

  • 10 размеров пикселя, с помощью Гауссовой размытости

Интегрированные меню

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

Во-первых, необходимо разработать пользовательский элемент управления, напоминающий всплывающее меню, как Речь, которую делает пример кода:

  Всплывающее меню Речи рисунка 24 согласуется с его проектом
Voice’s popup menu fits in with its design

Отметьте характеристики, совместно использованные всплывающим меню Aqua и пользовательским элементом управления, используемым здесь: значки стрелки, выровненный по левому краю текст и схема определения, указывающая границы управления. Кроме того, отметьте отличающийся цвет по сравнению с фоном виджета. Это все вещи принять во внимание при создании собственного управления меню.

Три элемента, один из которых невидим здесь, заставляют это меню работать: изображение, представляющее всплывающее меню, строку текста, показывающего текущий пункт меню, и, невидимый здесь, скрытое <select> элемент всплывающего меню, обеспечивающий фактическое меню, раньше выбирал опцию.

Реализация управления пользовательским меню

После разработки Вашего всплывающего меню необходимо установить три элемента в HTML: раскрывающееся изображение, которое Вы разработали, текстовый элемент, отражающий в настоящее время выбираемый пункт меню и a <select> элемент, содержащий Ваше фактическое меню:

<img class="popupMenuImage" src="Images/Menu.png" />
<div id="popupMenuText">Available Voices</div>
<select id='popupMenu' onchange='popupChanged(this);'>
        <option value="One">One</option>
        <option value="Two">Two</option>
</select>

Теперь, когда элементы существуют, располагают их использующий CSS. Изображение меню помещается сначала с текстом по нему. Опора <select> элемент, обеспечивающий меню, когда щелкнувшийся; это помещается по тексту и изображению, но обнуляется его непрозрачность.

.popupMenuImage {
    position: absolute;
    left: 28px;
    top: 169px;
    z-index: 18;
}
 
#popupMenuText {
    font: 13px "Helvetica Neue";
    font-weight: Bold;
    color: white;
    text-shadow: black 0px 1px 0px;
    position: absolute;
    left: 44px;
    top: 176px;
    z-index: 19;
}
 
#popupMenu {
    position:absolute;
    top: 169px;
    left: 28px;
    width: 163px;
    height: 30px;
    opacity: 0.0;
    z-index: 20;
}

Выполнение этого заставляет Ваше пользовательское изображение быть похожим на щелкнувшее управление, но в действительности, <select> получает щелчок и выводит на экран его меню. Пребывайте в уверенности, что, в то время как само всплывающее меню прозрачно, показанное меню непрозрачно.

Когда пользователь выбирает опцию в меню, заключительная часть изменяет пользовательский текст всплывающего меню. В HTML установлена функция, это вызывают, когда изменяется выбор popup. Эта функция изменяет текст меню для отражения нового выбора:

function popupChanged(elem)
{
    var chosenOption = elem.options[elem.selectedIndex].value;
    document.getElementById("popupMenuText").innerText = chosenOption;
 
    // Other code that handles the menu selection change
}

Поля поиска

Много виджетов обладают полем поиска, позволяющим пользователям находить содержание, которое выводит на экран Ваш виджет. WebKit предлагает новый тип <input> введите, вызванный search это обеспечивает взгляд и поведение стандартного поля поиска для виджета:

<input type="search">

В дополнение к search тип <input> когда этот тип используется, элемент, эти атрибуты доступны:

placeholder

Позволяет Вам указывать текст заполнителя для поля поиска; этот текст показан в поле, когда это не имеет ключевого фокуса и должно быть индикацией метки, какую введенный это ожидает.

results

Позволяет Вам указывать, сколько результатов сохраняется. Сохраненные критерии поиска выведены на экран в меню, это выведено на экран, когда по лупе поля поиска щелкают.

onsearch

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

incremental

Включая этот атрибут означает что onsearch обработчик вызывают каждый раз, когда символ вводится в поле поиска.

onkeypress

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

Теги справки

Много функций приложений помогают тегам, появляющимся пользователям, поскольку они содержат свой курсор по элементу. Ваш виджет должен вывести на экран теги справки для средств управления и любых других элементов, которые получили бы преимущества от дальнейшего объяснения. Для обеспечения тега справки для элемента используйте title атрибут:

<div id="helloText" title="This is a helpful explanation of this element">Hello, World!</div>

Универсальный доступ

OS X v.10.4 «Тигр» включает новую функцию под названием VoiceOver. VoiceOver является программой экранного доступа в масштабе всей системы, приносящей преимущества слабовидящим пользователям путем слышимого описания текущего окна.

Чтобы гарантировать, что VoiceOver должным образом описывает Ваш виджет, необходимо принять две вещи во внимание при создании его:

  • В Вашем HTML структурируйте свои элементы логически. Если Ваш виджет имеет нисходящую ориентацию, удостоверьтесь, что соответствующие элементы HTML находятся в порядке, отражающем их ориентацию. Аналогично, если Ваш виджет выводит на экран свою информацию слева вправо, удостоверьтесь, что крайний левый элемент является первым в Вашем HTML и что каждый последующий раздел следует в структуре файла.

  • Использовать alt атрибуты для описания изображений. VoiceOver читает их вслух когда дело доходит до изображения в Вашем виджете:

<img src="sun.png" alt="Sunny">