diff options
Diffstat (limited to 'docs/html-intl/intl/ru/design')
5 files changed, 1648 insertions, 0 deletions
diff --git a/docs/html-intl/intl/ru/design/get-started/principles.jd b/docs/html-intl/intl/ru/design/get-started/principles.jd new file mode 100644 index 0000000..7f4977c --- /dev/null +++ b/docs/html-intl/intl/ru/design/get-started/principles.jd @@ -0,0 +1,307 @@ +page.title=Принципы проектирования Android +@jd:body + +<p>Эти принципы проектирования были разработаны группой Android +по взаимодействию приложений с пользователями с целью соблюдения интересов пользователей. +Для создателей приложений под Android они лежат в +основе более подробных рекомендаций по проектированию для конкретных +типов устройств.</p> + +<p> +Учитывайте эти принципы, используя собственный +творческий потенциал и мышление разработчика. Впрочем, при наличии веских оснований допустимо некоторое отклонение от них. +</p> + +<h2 id="enchant-me">Постарайтесь понравиться пользователю</h2> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="delight-me">Вызовите у пользователя восхищение неожиданными решениями</h4> +<p>Красивые экраны, тщательно продуманная анимация или своевременные звуковые сигналы создают у пользователя +хорошее настроение. Утонченные эффекты вызывают у пользователя ощущение, +что его возможности не ограничены.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_delight.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="real-objects-more-fun">Реальные объекты доставляют больше удовольствия, чем кнопки и меню</h4> +<p>Позвольте пользователю касаться объектов приложения и манипулировать ими. Это сокращает когнитивные усилия, +необходимые для выполнения задачи, повышая эмоциональное удовлетворение.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_real_objects.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="make-it-mine">Позвольте пользователю сделать интерфейс индивидуальным</h4> +<p>Люди любят вносить в интерфейс что-то личное, чтобы чувствовать себя более комфортно и считать, что всё под контролем. Предоставьте +продуманные и эстетичные настройки по умолчанию и предусмотрите дополнительные настройки, забавные, но не препятствующие +выполнению основных задач.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_make_it_mine.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="get-to-know-me">Изучите пользователя</h4> +<p>Постепенно выясняйте предпочтения пользователя Вместо того, чтобы снова и снова заставлять его выбирать одно и то же, + сделайте непосредственно доступными ранее выбранные варианты.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_get_to_know_me.png"> + + </div> +</div> + +<h2 id="simplify-my-life">Упростите жизнь пользователю</h2> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="keep-it-brief">Будьте лаконичны</h4> +<p>Используйте короткие фразы с простыми словами. Люди, скорее всего, пропустят длинные предложения.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_keep_it_brief.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="pictures-faster-than-words">Картинки воспринимаются быстрее чем слова</h4> +<p>Используйте картинки в своих объяснениях. Они завладевают вниманием и действуют гораздо эффективнее +слов.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_pictures.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="decide-for-me">Принимайте решения за пользователя, но оставляйте последнее слово за ним</h4> +<p>Не задавайте пользователю лишних вопросов и действуйте наиболее разумным образом. Слишком широкий выбор вызывает чувство +растерянности. Если существует вероятность, что ваш выбор не устроит пользователя, предоставьте ему возможность отмены.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_decide_for_me.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="only-show-when-i-need-it">Показывайте только самое необходимое и в нужный момент времени</h4> +<p>Люди не в состоянии справиться сразу с большим количеством информации. Разбивайте задачи и информацию на небольшие легко +воспринимаемые части. Скройте несущественные на данный момент опции и обучайте пользователя по ходу дела.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_information_when_need_it.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="always-know-where-i-am">Пользователь всегда должен знать, в каком месте приложения он находится</h4> +<p>Придайте пользователю уверенность, что он не заблудился. Сделайте так, чтобы экраны в вашем приложении отличались друг от друга, и +используйте переходы, чтобы показать связь между экранами. Обеспечивайте обратную связь от выполняемых задач.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_navigation.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="never-lose-my-stuff">Ни в коем случае не теряйте данные пользователей</h4> +<p>Сохраняйте данные, на создание которых пользователь потратил свое время, и обеспечьте ему доступ к этой информации из любого места. Запоминайте настройки + и предпочтения на телефонах, планшетах и компьютерах. Это позволит значительно упростить +обновление приложения.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_never_lose_stuff.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="looks-same-should-act-same">Внешне похожие элементы должны вести себя одинаково</h4> +<p>Помогите людям распознать функциональные различия, сделав их визуально отличимыми. +Избегайте ситуаций, в которых разные места приложения выглядят похоже, но работают по-разному при одних тех же исходных данных.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_looks_same.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="interrupt-only-if-important">Прерывайте пользователя только в действительно важных ситуациях</h4> +<p>Подобно хорошему секретарю, приложение должно оградить пользователя от несущественных мелочей. Люди не любят отвлекаться, +и беспокоить их следует только в исключительно серьезных или не терпящих отлагательства ситуациях.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_important_interruption.png"> + + </div> +</div> + +<h2 id="make-me-amazing">Постарайтесь приятно удивить пользователя</h2> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="give-me-tricks">Предоставьте пользователю привычные приемы</h4> +<p>У людей повышается самооценка, когда они могут разобраться в чем-либо самостоятельно. Сделайте ваше приложение простым в освоении +за счет использования визуальных моделей и мышечной памяти из других приложений Android. Например, жест скольжения +является хорошим навигационным приемом.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_tricks.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="its-not-my-fault">Пользователь ни в чем не виноват</h4> +<p>Будьте корректны, подсказывая пользователю, как выйти из сложного положения. Никто не хочет чувствовать себя бестолковым, имея дело с вашим +приложением. При возникновении проблем дайте четкие указания по восстановлению, но избавьте пользователя от технических деталей. +В идеальном варианте приложение способно самостоятельно исправить ситуацию.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_error.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="sprinkle-encouragement">Не скупитесь на поддержку пользователя</h4> +<p>Разбейте сложные задачи на более мелкие, легко выполнимые этапы. Обеспечьте обратную связь, +даже при незначительных операциях.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="do-heavy-lifting-for-me">Выполняйте за пользователя черную работу</h4> +<p>Дайте новичкам возможность почувствовать себя экспертами, реализовав операции о которых они и не подозревали. Например, +ярлыки, объединяющие несколько фотоэффектов, позволят превратить любительские фотографии в шедевры всего за +несколько шагов.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_heavy_lifting.png"> + + </div> +</div> + +<div class="vspace size-2"> </div> + +<div class="layout-content-row"> + <div class="layout-content-col span-7"> + +<h4 id="make-important-things-fast">Важные действия должны происходить быстро</h4> +<p>Не все действия равноценны. Решите, какие функции вашего приложения являются самыми важными, и обеспечьте возможность +быстро найти и использовать их. Например, это может быть кнопка спуска затвора в фотокамере или кнопка паузы в музыкальном плеере.</p> + + </div> + <div class="layout-content-col span-6"> + + <img src="{@docRoot}design/media/principles_make_important_fast.png"> + + </div> +</div> diff --git a/docs/html-intl/intl/ru/design/material/index.jd b/docs/html-intl/intl/ru/design/material/index.jd new file mode 100644 index 0000000..2cfd91e --- /dev/null +++ b/docs/html-intl/intl/ru/design/material/index.jd @@ -0,0 +1,186 @@ +page.title=Material Design +page.tags=Material Design +page.type=design +page.image=design/material/images/MaterialLight.png + +@jd:body + +<!-- developer docs box --> +<a class="notice-developers right" href="{@docRoot}training/material/index.html"> + <div> + <h3>Документация для разработчиков</h3> + <p>Создание приложений с помощью Material Design</p> + </div> +</a> + +<!-- video box --> +<a class="notice-developers-video" href="https://www.youtube.com/watch?v=p4gmvHyuZzw"> +<div> + <h3>Видеоролик</h3> + <p>Введение в Material Design</p> +</div> +</a> + +<!-- video box --> +<a class="notice-developers-video" href="https://www.youtube.com/watch?v=YaG_ljfzeUw"> +<div> + <h3>Видеоролик</h3> + <p>Бумага и чернила: материалы, имеющие первостепенное значение</p> +</div> +</a> + +<!-- video box --> +<a class="notice-developers-video" href="https://www.youtube.com/watch?v=XOcCOBe8PTc"> +<div> + <h3>Видеоролик</h3> + <p>Material Design в приложениях для конференции Google I/O</p> +</div> +</a> + + + +<p itemprop="description">Material Design представляет собой комплексную концепцию создания визуальных, движущихся и + интерактивных элементов для различных платформ и устройств. Теперь Android включает в себя поддержку +приложений с элементами Material Design. Чтобы использовать элементы Material Design в своих приложениях под Android, руководствуйтесь инструкциями +в <a href="http://www.google.com/design/spec">спецификации Material Design</a>, а также воспользуйтесь +новыми компонентами и функциями, доступными в Android 5.0 (уровень API 21) и выше.</p> + +<p>Android предоставляет следующие элементы для построения приложений в соответствии с концепцией Material Design:</p> + +<ul> + <li>новую тему;</li> + <li>новые виджеты для сложных представлений;</li> + <li>новые API-интерфейсы для нестандартных теней и анимаций.</li> +</ul> + +<p>Дополнительные сведения о реализации Material Design в Android см. в разделе +<a href="{@docRoot}training/material/index.html">Создание приложений с помощью Material Design</a>.</p> + + +<h3>Тема Material Design</h3> + +<p>Тема Material Design предоставляет новый стиль для ваших приложений, системные виджеты, для которых можно настраивать +цветовую палитру, и анимации, выполняемые по умолчанию в качестве реакции на касание и при переходах между действиями.</p> + +<!-- two columns --> +<div style="width:700px;margin-top:25px;margin-bottom:20px"> +<div style="float:left;width:250px;margin-left:40px;margin-right:60px;"> + <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238" /> + <div style="width:140px;margin:0 auto"> + <p style="margin-top:8px">Тема Material Design в темных тонах</p> + </div> +</div> +<div style="float:left;width:250px;margin-right:0px;"> + <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238" /> + <div style="width:140px;margin:0 auto"> + <p style="margin-top:8px">Тема Material Design в светлых тонах</p> + </div> +</div> +<br style="clear:left"/> +</div> + +<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/theme.html">Использование темы +Material Design</a>.</p> + + +<h3>Списки и подсказки</h3> + +<p>Android предоставляет два новых виджета для отображения подсказок и списков с использованием стилей +и анимаций Material Design:</p> + +<!-- two columns --> +<div style="width:700px;margin-top:25px;margin-bottom:20px"> +<div style="float:left;width:250px;margin-left:40px;margin-right:60px;"> + <img src="{@docRoot}design/material/images/list_mail.png" width="500" height="426" /> + <p>Виджет <code>RecyclerView</code> Представляет собой более гибкую версию <code>ListView</code>, +которая поддерживает различные типы макетов и способствует повышению производительности.</p> +</div> +<div style="float:left;width:250px;margin-right:0px;"> + <img src="{@docRoot}design/material/images/card_travel.png" width="500" height="426" /> + <p>Виджет <code>CardView</code> позволяет отображать важные элементы информации внутри + подсказок, имеющие согласованный внешний вид и поведение.</p> +</div> +<br style="clear:left"/> +</div> + +<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/lists-cards.html">Создание списков +и подсказок</a>.</p> + + +<h3>Тени представлений</h3> + +<p>Теперь, помимо свойств X и Y, представления в Android имеют свойство +Z. Это новое свойство показывает, насколько представление "приподнято", иными словами, определяет</p> + +<ul> +<li>размер тени: чем больше Z, тем больше тени, отбрасываемые представлением;</li> +<li>порядок рисования: представления с более высокими значениями Z отображаются поверх других.</li> +</ul> + +<div style="width:290px;margin-left:35px;float:right"> + <div class="framed-nexus5-port-span-5"> + <video class="play-on-hover" autoplay> + <source src="{@docRoot}design/material/videos/ContactsAnim.mp4"/> + <source src="{@docRoot}design/videos/ContactsAnim.webm"/> + <source src="{@docRoot}design/videos/ContactsAnim.ogv"/> + </video> + </div> + <div style="font-size:10pt;margin-left:20px;margin-bottom:30px"> + <em>Для воспроизведения фильма нажмите на экран устройства</em> + </div> +</div> + +<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/shadows-clipping.html">Определение +теней и обрезка представлений</a>.</p> + + +<h3>Анимация</h3> + +<p>Новые API-интерфейсы анимации позволяют создавать нестандартную анимацию для реакции на касание в элементах пользовательского интерфейса, +изменения состояниия представления и переходов между действиями.</p> + +<p>Эти API-интерфейсы позволяют</p> + +<ul> +<li style="margin-bottom:15px"> +реагировать на касание в представлениях, используя анимацию для <strong>реакции на касание</strong>; +</li> +<li style="margin-bottom:15px"> +скрывать и отображать представление с помощью анимации для <strong>кругового появления</strong>; +</li> +<li style="margin-bottom:15px"> +переключаться меду действиями с помощью настраиваемой анимации для <strong>переходов между действиями</strong>; +</li> +<li style="margin-bottom:15px"> +создавать более естественное движение с помощью анимации для <strong>перемещения по кривой</strong>; +</li> +<li style="margin-bottom:15px"> +анимировать изменение одного или нескольких свойств представления с помощью анимации для <strong>изменения состояния представления</strong>; +</li> +<li style="margin-bottom:15px"> +отображать анимацию в <strong>графических элементах списков состояний</strong> в помежутке между изменением состояний представления. +</li> +</ul> + +<p>Анимация для реакции на касание встроена а некоторые стандартные представления, например, кнопки. Новые API-интерфейсы +позволяют разработчику настраивать эти анимации и добавлять их в свои нестандартные представления.</p> + +<p>Дополнительные сведения, см. в разделе <a href="{@docRoot}training/material/animations.html">Определение настраиваемой +анимации</a>.</p> + + +<h3>Графические объекты</h3> + +<p>Следующие возможности по работе с графическими объектами облегчают реализацию приложений с элементами Material Design:</p> + +<ul> +<li><strong>векторные объекты</strong> можно масштабировать без ущерба для четкости, и они отлично подходят +в качестве одноцветных значков приложения;</li> +<li><strong>тонирование графических объектов</strong> позволяет определять растровые изображения как альфа-маску и тонировать их +нужным цветом во время выполнения;</li> +<li><strong>извлечение цвета</strong> позволяет автоматически извлекать главные цвета из +растровых изображений.</li> +</ul> + +<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/drawables.html">Работа с +элементами дизайна</a>.</p> diff --git a/docs/html-intl/intl/ru/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/ru/design/patterns/confirming-acknowledging.jd new file mode 100644 index 0000000..99a0d17 --- /dev/null +++ b/docs/html-intl/intl/ru/design/patterns/confirming-acknowledging.jd @@ -0,0 +1,70 @@ +page.title=Подтверждение и уведомление +page.tags=dialog,toast,notification +@jd:body + +<p>В некоторых ситуациях, когда пользователь выполняет действие в вашем приложении, полезно в текстовом виде <em>запросить подтверждение</em> этого действия или <em>отобразить уведомление</em> о его выполнении.</p> + +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <img src="{@docRoot}design/media/confirm_ack_confirming.png"> + <p><strong>Подтверждение</strong> — это просьба к пользователю подтвердить, что он действительно хочет, чтобы запущенное действие было выполнено. Иногда подтверждение отображается вместе с предупреждением или важной информацией относительно действия, которую пользователь должен принять во внимание.</p> + </div> + <div class="layout-content-col span-6"> + <img src="{@docRoot}design/media/confirm_ack_acknowledge.png"> + <p><strong>Уведомление</strong> отображает текст, позволяющий пользователю узнать о завершении действия. Это устраняет неопределенность в отношении неявных операций, которые выполняет система. В некоторых случаях уведомления отображаются вместе с возможностью отменить действие.</p> + </div> +</div> + +<p>Взаимодействие с пользователями такими способами позволяет снять неопределенность относительно событий, которые произошли или произойдут. Кроме того, подтверждение или уведомление позволяют удержать пользователя от ошибок, о которых он, возможно, будет сожалеть.</p> + +<h2>Ситуации, в которых следует запрашивать подтверждение и/или отображать уведомление</h2> +<p>Не все действия требуют подтверждения или уведомления. При принятии решений во время разработки приложений руководствуйтесь следующей блок-схемой.</p> +<img src="{@docRoot}design/media/confirm_ack_flowchart.png"> + +<h2>Подтверждение</h2> +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <h4>Пример: Google Play Books</h4> + <img src="{@docRoot}design/media/confirm_ack_ex_books.png"> + <p>В этом примере пользователь пытается удалить книгу из своей библиотеки Play Google. Для подтверждения этого действия отображается <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">оповещение</a>, поскольку пользователь должен понимать, что книга больше не будет доступна ни с одного устройства.</p> + <p>При разработке диалогового окна подтверждения следует создать осмысленный заголовок, отражающий запрошенное действие.</p> + </div> + <div class="layout-content-col span-7"> + <h4>Пример: Android Beam</h4> + <img src="{@docRoot}design/media/confirm_ack_ex_beam.png"> + <p>Подтверждения не обязательно должны быть представлены в виде оповещения с двумя кнопками. После старта Android Beam пользователю предлагается прикоснуться к содержимому (в данном примере, к фотографии) для обмена данными. Если пользователь решит не продолжать, он просто ничего не предпримет.</p> + </div> +</div> + +<h2>Уведомление</h2> +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <h4>Пример: Сохранение оставленного черновика Gmail</h4> + <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png"> + <p>В этом примере, если пользователь переходит назад или вверх от экрана составления писем Gmail (возможно, вследствие неожиданного события), текущий черновик автоматически сохраняется. Всплывающее уведомление обращает внимание пользователя на этот факт. Через несколько секунд оно исчезает.</p> + <p>Отмена здесь неуместна, поскольку сохранение было инициировано приложением, а не пользователем. Кроме того, пользователь сможет без труда вернуться к написанию сообщения, перейдя к списку черновиков.</p> + + </div> + <div class="layout-content-col span-6"> + <h4>Пример: Удаление переписки Gmail</h4> + <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png"> + <p>После того, как пользователь удалит переписку из Gmail, появляется уведомление с возможностью отмены действия. Оно остается, пока пользователь не предпримет постороннее действие, например, прокрутит список писем.</p> + </div> +</div> + +<h2>Отсутствие подтверждения или уведомления</h2> +<div class="layout-content-row"> + <div class="layout-content-col span-6"> + <h4>Пример: +1</h4> + <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png"> + <p><strong>Подтверждение не требуется</strong>. Если пользователь нажал +1 случайно, это не имеет большого значения. Он может просто нажать кнопку еще раз, чтобы отменить действие.</p> + <p><strong>Уведомление не требуется</strong>. Пользователь увидит, что кнопка +1 поменяла состояние и стала красной. Это достаточно ясный сигнал.</p> + </div> + <div class="layout-content-col span-7"> + <h4>Пример: Удаление приложения с главного экрана</h4> + <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png"> + <p><strong>Подтверждение не требуется</strong>. Это преднамеренное действие: пользователь должен перетащить элемент на относительно крупную отдельно расположенную цель. Поэтому случайности здесь практически невероятны. К тому же, если пользователь пожалеет о своем решении, ему потребуется всего несколько секунд, чтобы вернуть приложение.</p> + <p><strong>Уведомление не требуется</strong>. Пользователь будет знать, что приложение удалено с главного экрана, потому что сам заставил его исчезнуть в результате перетаскивания.</p> + + </div> +</div> diff --git a/docs/html-intl/intl/ru/design/patterns/navigation.jd b/docs/html-intl/intl/ru/design/patterns/navigation.jd new file mode 100644 index 0000000..a65a8f6 --- /dev/null +++ b/docs/html-intl/intl/ru/design/patterns/navigation.jd @@ -0,0 +1,213 @@ +page.title=Навигация с помощью кнопок "Назад" и "Вверх" +page.tags="navigation","activity","task","up navigation","back navigation" +page.image=/design/media/navigation_between_siblings_gmail.png +@jd:body + +<a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html"> + <div> + <h3>Документация для разработчиков</h3> + <p>Обеспечение эффективной навигации</p> + </div> +</a> + +<p itemprop="description">Внутренне непротиворечивая навигация является важнейшей составляющей пользовательского интерфейса. Мало что так раздражает +пользователей, как несогласованное или непредсказуемое поведение элементов навигации. В Android 3.0 +глобальное поведение навигации претерпело значительные изменения. Тщательное следование +инструкциям по применению кнопок "Назад" и "Вверх" сделает навигацию в вашем приложении предсказуемой и надежной с точки зрения пользователей.</p> +<p>В Android 2.3 и в более ранних версиях для навигации внутри приложения использовалась системная кнопка <em>Назад</em>. + С появлением панели действий в Android 3.0 стал доступен второй механизм +навигации, — кнопка <em>Вверх</em>, содержащая значок приложения и левую угловую скобку.</p> + +<img src="{@docRoot}design/media/navigation_with_back_and_up.png"> + +<h2 id="up-vs-back">Кнопки "Вверх" и "Назад"</h2> + +<p>Кнопка "Вверх" используется для навигации внутри приложения по иерархической структуре его +экранов. Например, если на экране A отображается некоторый список, и при выборе какого-либо элемента открывается +экран B (с подробной информацией об этом элементе), то на экране B должна присутствовать кнопка "Вверх" + для возврата к экрану A.</p> +<p>Если экран является самым верхним в приложении (то есть главным), он не должен содержать кнопку +"Вверх".</p> + +<p>Системная кнопка "Назад" используется для навигации в обратном хронологическом порядке среди +экранов, недавно открытых пользователем. Такая навигация основана на порядке появления +экранов, а не на иерархии приложения.</p> + +<p>Если предыдущий экран одновременно является иерархическим родителем текущего, +кнопка "Назад" имеет то же действие, что и кнопка "Вверх"—, и это случается довольно +часто. Однако, в отличие от кнопки "Вверх", гарантирующей, что пользователь остается в приложении, кнопка "Назад" +может перевести его на главный экран или даже в другое приложение.</p> + +<img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png"> + +<p>Кроме того, кнопка "Назад" проявляет поведение, не связанное напрямую с навигацией между экранами. Она +</p> +<ul> +<li>закрывает перемещаемые окна (диалоговые, всплывающие);</li> +<li>закрывает контекстные панели действий и снимает выделение с выделенных элементов;</li> +<li>скрывает экранную клавиатуру (IME).</li> +</ul> +<h2 id="within-app">Навигация внутри приложения</h2> + +<h4>Переход на экраны с несколькими точками входа</h4> +<p>Некоторые экраны не имеют строгой позиции в иерархии приложения, и на них можно перейти +из нескольких точек. Например, на экран настроек можно попасть из любого другого экрана +приложения. В таком случае кнопка "Вверх" должна осуществлять возврат на вызвавший экран, т. е. вести себя +идентично кнопке "Назад".</p> +<h4>Изменение представления содержимого на экране</h4> +<p>Изменение параметров представления содержимого на экране не сказывается на поведении кнопок "Вверх" и "Назад", — экран остается +на прежнем месте в иерархии приложения, а история навигации не меняется.</p> +<p>Примерами изменения представления являются</p> +<ul> +<li>переключение представлений с помощью вкладок или жестов прокрутки вправо/влево;</li> +<li>переключение представлений с помощью раскрывающихся (или свернутых) вкладок;</li> +<li>фильтрация списка;</li> +<li>сортировка списка;</li> +<li>изменение характеристик отображения (например, масштаба).</li> +</ul> +<h4>Навигация между экранами одного уровня</h4> +<p>Когда приложение поддерживает навигацию от списка к подробному представлению одного из его элементов, нередко +имеет смысл поддержать навигацию от этого элемента к другому, идущему в списке до или +после него. Например, в Gmail можно провести пальцем влево или вправо по переписке, +чтобы просмотреть предыдущие или последующие входящие сообщения. Как и в случае изменения представления на экране, такая +навигация не меняет поведение кнопок "Вверх" и "Назад".</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_gmail.png"> + +<p>Однако существует важное исключение из этого правила во время просмотра подробных представлений элементов, не связанных +вместе ссылающимся списком, например—, приложений +одного разработчика или альбомов одного исполнителя в Play Store. В этих случаях переход по каждой ссылке создает +историю навигации, что заставляет кнопку "Назад" перебирать все ранее просмотренные экраны. Кнопка "Вверх" должна по-прежнему +игнорировать эти связанные по смыслу экраны и осуществлять переход на последний просмотренный контейнерный экран.</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_market1.png"> + +<p>Разработчик может сделать поведение кнопки "Вверх" еще более интеллектуальным, исходя из своих знаний о структуре подробного +представления. Вернемся к примеру с просмотром Play Store. Представьте, что пользователь перешел от информации о +книге к информации о ее экранизации. Тогда кнопка "Вверх" могла бы переводить пользователя в контейнер +(Фильмы), в котором он еще не был.</p> + +<img src="{@docRoot}design/media/navigation_between_siblings_market2.png"> + +<h2 id="into-your-app">Навигация внутрь приложения с помощью уведомлений и виджетов главного экрана</h2> + +<p>У разработчика также есть возможность использовать уведомления или виджеты главного экрана, чтобы помочь пользователю переходить к экранам, +расположенным глубоко в иерархической структуре приложения. Например, виджет Inbox приложения Gmail и уведомление о новом сообщении могут + перевести пользователя непосредственно к переписке, в обход экрана с входящими сообщениями.</p> + +<p>В обоих этих случаях реализуйте следующее поведение кнопки "Вверх":</p> + +<ul> +<li><em>Если целевой экран, как правило, достигается из одного конкретного экрана +приложения</em>, кнопка "Вверх" должна осуществлять переход на этот экран.</li> +<li><em>В противном случае</em> кнопка "Вверх" должна осуществлять переход на самый верхний (главный) экран приложения.</li> +</ul> + +<p>Что касается кнопки "Назад", необходимо обеспечить более предсказуемую навигацию, вставив в +в стек переходов назад полный путь навигации вверх к самому верхнему экрану приложения. Это позволит пользователям, +забывшим, как они вошли в приложение, перейти к его главному экрану перед выходом из +приложения.</p> + +<p>Например, виджет главного экрана Gmail имеет кнопку, переводящую пользователя прямо на экран +создания сообщений. Кнопки "Вверх" или "Назад" переведут пользователя с этого экрана на экран входящих писем, а оттуда +кнопка "Назад" переведет его на главную страницу.</p> + +<img src="{@docRoot}design/media/navigation_from_outside_back.png"> + +<h4>Косвенные уведомления</h4> + +<p>Когда приложению нужно вывести информацию сразу о нескольких событиях, оно может выдать +одно уведомление, направляющее пользователя на промежуточный экран. Этот экран содержит сводку +событий и предоставляет пользователю возможность перейти вглубь приложения. Такие уведомления +называются <em>косвенными</em>.</p> + +<p>Кнопка "Назад" действует не так, как в случае со стандартными (прямыми) уведомлениями. Нажав ее на промежуточном экране косвенного уведомления, +пользователь вернется в точку, где было сгенерировано уведомление, —поскольку +в стеке переходов назад не появились никакие дополнительные экраны. Если пользователь перейдет в приложение с +промежуточного экрана, поведение кнопок "Вверх" и "Назад" будет таким же, как и при стандартных уведомлениях: +навигация внутри приложения, а не возврат к промежуточному экрану.</p> + +<p>Например, предположим, что пользователь получил косвенное уведомление от приложения Calendar при открытом приложении Gmail. Если он коснется +этого уведомления, откроется промежуточный экран с напоминаниями о нескольких +событиях. Касание кнопки "Назад" на промежуточном экране возвратит пользователя в Gmail. Если пользователь коснется конкретного +события, он перейдет с промежуточного экрана в приложение Calendar к подробной информации о +событии. Оттуда кнопки "Вверх" и "Назад" переведут его на верхний уровень приложения Calendar.</p> + +<img src="{@docRoot}design/media/navigation_indirect_notification.png"> + +<h4>Всплывающие уведомления</h4> + +<p><em>Всплывающие уведомления</em> появляются непосредственно перед пользователем, +в обход панели уведомлений. Они используются редко и <strong>должны быть зарезервированы для ситуаций, в которых требуется немедленная +реакция пользователя, и прерывание его действий оправдано</strong>. Например, +приложение Talk с помощью таких уведомлений извещает пользователя о поступившем от друга приглашении присоединиться к видеочату, поскольку срок действия этого +приглашения истекает через несколько секунд.</p> + +<p>В отношении навигации всплывающие уведомления ведут себя во многом аналогично промежуточному экрану +косвенного уведомления. Кнопка "Назад" удаляет всплывающее уведомление. Если пользователь переходит +от всплывающего уведомления к уведомляющему приложению, кнопки "Вверх" и "Назад" действуют, как при стандартных уведомлениях, +выполняя навигацию внутри приложения.</p> + +<img src="{@docRoot}design/media/navigation_popup_notification.png"> + +<h2 id="between-apps">Навигация между приложениями</h2> + +<p>Одним из фундаментальных достоинств системы Android является способность приложений активировать друг +друга, что дает пользователю возможность переходить непосредственно из одного приложения в другое. Например, +приложение, которому нужно сделать снимок, может активировать приложение Camera, которое передаст фотографию +вызвавшему приложению. Это огромное преимущество, как для разработчика, имеющего возможность без проблем воспользоваться +кодом других приложений, так и для пользователя, получающего согласованный интерфейс для часто выполняемых +действий.</p> + +<p>Чтобы разобраться в навигации между приложениями, необходимо разобраться в поведении платформы Android, +которое обсуждается ниже.</p> + +<h4>Действия, задачи и намерения</h4> + +<p><strong>Действие</strong> в Android — это компонент приложения, определяющий экран с +информацией и все действия, которые при этом может выполнить пользователь. Приложение представляет собой набор +действий, состоящий как из действий, созданных разработчиком, так и из тех, которые выполняются с помощью других приложений.</p> + +<p><strong>Задача</strong> — последовательность действий, выполняемых пользователем для достижения цели. Отдельная +задача может использовать действия, заимствованные у одного или у нескольких +различных приложений.</p> + +<p><strong>Намерение</strong> — механизм, позволяющий приложению сигнализировать, что ему требуется помощь +другого приложения в выполнении некоторого действия. Действия, выполняемые приложением, могут указывать, на какие намерения +они готовы отвечать. Для осуществления достаточно распространенных намерений, например, "Поделиться", у пользователя может быть установлено несколько приложений, + способных выполнить соответствующий запрос.</p> + +<h4>Пример: навигация между приложениями для поддержки совместного использования ресурсов</h4> + +<p>Чтобы понять, как действия, задачи и намерения взаимодействуют друг с другом, разберемся, как одно приложение позволяет пользователям +поделиться содержимым с помощью другого приложения. Например, запуск приложения Play Store из главного экрана создает +новую задачу, Task A (см. рисунок ниже). Когда пользователь выполнит навигацию по Play Store и коснется интересующей его книги, +чтобы просмотреть информацию о ней, он останется в том же приложении, расширив его возможности с помощью добавленных действий. Запуск +действия "Поделиться" выводит перед пользователем диалоговое окно со списком действий (из разных приложений), +зарегистрированных для выполнения намерения "Поделиться".</p> + +<img src="{@docRoot}design/media/navigation_between_apps_inward.png"> + +<p>Если пользователь предпочтет поделиться информацией через Gmail, действие "Написать" приложения Gmail добавляется как продолжение задачи +Task A—, и никакая новая задача не создается. Если в фоновом режиме работает собственная задача Gmail, на нее это никак +не повлияет.</p> + +<p>Если во время действия "Составление сообщения" пользователь отправит сообщение или коснется кнопки "Назад", он вернется к + действию "Просмотр информации о книге". Продолжая нажимать на "Назад", пользователь будет совершать переходы назад в Play +Store, пока, наконец, не вернется на главный экран.</p> + +<img src="{@docRoot}design/media/navigation_between_apps_back.png"> + +<p>Однако, коснувшись кнопки "Вверх" во время действия "Составление сообщения", пользователь выскажет пожелание остаться в приложении +Gmail. Откроется экран действия "Переписка" приложения Gmail, и для него будет создано новая задача Task B. Новые задачи +всегда имеют корень на главном экране, поэтому касание кнопки "Назад" на экране переписки возвращает пользователя именно туда.</p> + +<img src="{@docRoot}design/media/navigation_between_apps_up.png"> + +<p>Задача Task A остается в фоновом режиме, и пользователь может вернуться к ней впоследствии (например, с помощью +экрана с последними приложениями). Если в фоновом режиме уже работает собственная задача Gmail, она будет замещена +задачей Task B. Произойдет отказ от предыдущего контекста ради новой цели пользователя.</p> + +<p>Если для обработки намерений ваше приложение зарегистрирует действие, расположенное в глубине своей иерархии, +следуйте инструкциям по реализации навигации с помощью кнопки "Вверх", изложенным в разделе <a href="#into-your-app">Навигация внутрь приложения с помощью виджетов и +уведомлений главного экрана</a>.</p> diff --git a/docs/html-intl/intl/ru/design/patterns/notifications.jd b/docs/html-intl/intl/ru/design/patterns/notifications.jd new file mode 100644 index 0000000..db46ad5 --- /dev/null +++ b/docs/html-intl/intl/ru/design/patterns/notifications.jd @@ -0,0 +1,872 @@ +page.title=Уведомления +page.tags="notifications","design","L" +@jd:body + + <a class="notice-developers" href="{@docRoot}training/notify-user/index.html"> + <div> + <h3>Документация для разработчиков</h3> + <p>Уведомление пользователя</p> + </div> +</a> + +<a class="notice-designers" href="notifications_k.html"> + <div> + <h3>Уведомления в Android версии 4.4 и ниже</h3> + </div> +</a> + +<!-- video box --> +<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY"> +<div> + <h3>Видеоролик</h3> + <p>DevBytes: Уведомления в Android L Developer Preview</p> +</div> +</a> + +<style> + .col-5, .col-6, .col-7 { + margin-left:0px; + } +</style> + +<p>Уведомления позволяют извещать пользователя о релевантных и +периодически возникающих +событиях в приложении, таких как новые сообщения в чате или события в календаре. +Систему уведомлений можно рассматривать как канал новостей, извещающий пользователя о важных +событиях по мере +их возникновения, или как журнал, ведущий хронику событий, пока пользователь не обращает на них +внимания, и синхронизируемый должным образом на всех устройствах Android этого пользователя.</p> + +<h4 id="New"><strong>Новые возможности Android 5.0</strong></h4> + +<p>В Android 5.0 уведомления были существенно обновлены структурно, +визуально, и функционально:</p> + +<ul> + <li>был изменен внешний вид уведомлений в соответствии с новой +темой Material Design;</li> + <li> теперь уведомления доступны на экране блокировки, в то время как +конфиденциальная информация по-прежнему + может быть скрыта;</li> + <li>уведомления с высоким приоритетом, полученные при включенном устройстве, теперь имеют новый формат и называются + уведомлениями Heads-up;</li> + <li>уведомления синхронизируются с облаком: если удалить уведомление на одном из устройств +Android, оно будет удалено + и на остальных устройствах.</li> +</ul> + +<p class="note"><strong>Примечание.</strong> Разработка уведомлений в этой версии +Android значительно +отличается от их разработки в предыдущих версиях. Информацию о разработке уведомлений в предыдущих +версиях можно найти в разделе <a href="./notifications_k.html">Уведомления в Android версии 4.4 и ниже</a>.</p> + +<h2 id="Anatomy">Структура уведомления</h2> + +<p>В этом разделе описываются основные компоненты уведомления и их +отображение на устройствах различных типов.</p> + +<h3 id="BaseLayout">Базовая компоновка</h3> + +<p>Все уведомления имеют, как минимум, базовую компоновку, которую составляют следующие элементы.</p> + +<ul> + <li> <strong>Значок</strong> уведомления. Значок символизирует +инициирующее приложение. Он также может + указывать на тип уведомления, если приложение генерирует уведомления нескольких +типов.</li> + <li> <strong>Заголовок</strong> уведомления и дополнительный +<strong>текст</strong>.</li> + <li> <strong>Временная метка</strong>.</li> +</ul> + +<p>Уведомления, созданные с помощью {@link android.app.Notification.Builder Notification.Builder} +для предыдущих версий платформы, выглядят и функционируют в Android +5.0 так же, как и прежде, за исключением незначительных стилистических отличий, вносимых +системой. Дополнительную информацию о внешнем виде и функциональности уведомлений в предыдущих версиях +Android можно найти в разделе +<a href="./notifications_k.html">Уведомления в Android версии 4.4 и ниже</a>.</p></p> + + + <img style="margin:20px 0 0 0" src="{@docRoot}images/android-5.0/notifications/basic_combo.png" alt="" width="700px" /> + + +<div style="clear:both;margin-top:20px"> + <p class="img-caption"> + Уведомление в базовой компоновке на мобильном устройстве (слева) и то же уведомление на носимом устройстве (справа) + с фотографией пользователя и значком уведомления + </p> + </div> + +<h3 id="ExpandedLayouts">Расширенная компоновка</h3> + + +<p>Разработчик может выбрать степень подробности уведомлений, генерируемых его +приложением. Уведомление может содержать первые +несколько строк сообщения или миниатюру изображения. В качестве дополнительной +информации можно предоставлять пользователю +контекст и, —в некоторых случаях, —давать ему возможность прочитать сообщение +целиком. Чтобы переключаться + между компактной и расширенной компоновкой, пользователь может применить жест сжатия/масштабирования или +провести пальцем по экрану. + Для уведомлений о единичных событиях Android предоставляет + разработчику приложения три шаблона расширенной компоновки +(текст, входящая почта и изображения). Ниже приведены скриншоты уведомлений о единичных +событиях на мобильных устройствах (слева) + и на носимых устройствах (справа).</p> + +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/expandedtext_combo.png" + alt="" width="700px" height;="284px" /> +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/stack_combo.png" + alt="" width="700px" height;="284px" /> +<img style="margin-top:30px" +src="{@docRoot}images/android-5.0/notifications/ExpandedImage.png" + alt="" width="311px" height;="450px" /> + +<h3 id="actions" style="clear:both; margin-top:40px">Действия</h3> + +<p>Android поддерживает дополнительные действия, отображаемые в нижней части +уведомления. +Благодаря этому пользователи могут выполнять операции, типичные для данного +уведомления, непосредственно из него, не открывая +само приложение. +Это ускоряет взаимодействие и, вместе с операцией "провести пальцем, чтобы удалить", позволяет пользователю сосредоточиться на +важных для него уведомлениях.</p> + + + <img src="{@docRoot}images/android-5.0/notifications/action_combo.png" alt="" width="700px" /> + + + +<p style="clear:both">При определении количества действий в уведомлении следует проявлять +благоразумие. Чем больше +действий предоставлено пользователю, тем выше когнитивная сложность приложения. Ограничьтесь +минимальным количеством +действий, предоставив пользователю наиболее важные и +значимые.</p> + +<p>В уведомлениях отдавайте предпочтение действиям</p> + +<ul> + <li> важным, выполняемым наиболее часто и типичным для отображаемого +содержимого; + <li> позволяющим пользователю быстрее решить задачу. +</ul> + +<p>Избегайте действий</p> + +<ul> + <li> неоднозначных; + <li> совпадающих с действиями, выполняемыми для данного уведомления по умолчанию (например, "Прочитать" или +"Открыть"). +</ul> + + + +<p>Следует предоставлять не более трех действий, указав для каждого +значок и название. + Добавление действий в базовую компоновку делает уведомление расширяемым, +даже если + оно не имеет расширенной компоновки. Поскольку действия отображаются только у +расширенных + уведомлений, необходимо, чтобы любое действие, +которое пользователь может выполнить из + уведомления, было доступно и в соответствующем +приложении.</p> + +<h2 style="clear:left">Уведомления heads-up</h2> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/hun-example.png" alt="" width="311px" /> + <p class="img-caption"> + Пример уведомления heads-up (входящий телефонный звонок, высокий приоритет), +появляющегося поверх + приложения с эффектом присутствия + </p> +</div> + +<p>Когда поступает уведомление с высоким приоритетом (см. изображение справа), оно в течение короткого времени +отображается +в расширенной компоновке, позволяя выполнить допустимые действия.</p> +<p> Затем уведомление принимает обычный +вид. Если для уведомления установлен высокий, максимальный или полноэкранный <a href="#correctly_set_and_manage_notification_priority">приоритет</a> +, оно становится уведомлением heads-up.</p> + +<p><b>Хорошими примерами событий для уведомлений heads-up являются</b></p> + +<ul> + <li> входящий телефонный звонок, во время использования устройства;</li> + <li> сигнал будильника во время использования устройства;</li> + <li> новое SMS-сообщение;</li> + <li> низкий уровень заряда аккумулятора.</li> +</ul> + +<h2 style="clear:both" id="guidelines">Основные рекомендации</h2> + + +<h3 id="MakeItPersonal">Персонализируете уведомление</h3> + +<p>Уведомление о событии, инициированном другим пользователем (например, сообщение или +обновление статуса), должно содержать изображение пользователя, добавленное с помощью +{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}. Кроме того, в метаданные уведомления необходимо включить информацию о +пользователе (см. {@link android.app.Notification#EXTRA_PEOPLE}).</p> + +<p>Главный значок уведомления будет по-прежнему отображаться, чтобы пользователь мог связать +его со значком +на строке состояния.</p> + + +<img src="{@docRoot}images/android-5.0/notifications/Triggered.png" alt="" width="311px" /> +<p style="margin-top:10px" class="img-caption"> + Уведомление, идентифицирующее пользователя-инициатора, и отображающее отправленное содержимое. +</p> + + +<h3 id="navigate_to_the_right_place">Выполняйте переход в нужное место</h3> + +<p>Когда пользователь касается тела уведомления (за пределами кнопок +с действиями), должен осуществляться переход в то место приложения, +где пользователь сможет просмотреть информацию, о которой извещает уведомление, и действовать в соответствии +с нею. В большинстве случаев там будет находиться подробное представление одного элемента данных, например, сообщения, +но возможно и +сокращенное представление, если накопилось несколько уведомлений. Если приложение переводит +пользователя на какой-либо уровень, отличный от верхнего, реализуйте навигацию в стеке переходов назад в приложении, чтобы +пользователь мог нажать системную кнопку "Назад" и вернуться на верхний уровень. Дополнительную информацию можно найти в разделе +<em>Навигация внутрь приложения с помощью виджетов и уведомлений главного экрана</em> в шаблоне проектирования +<a href="{@docRoot}design/patterns/navigation.html#into-your-app">Навигация</a>.</p> + +<h3 id="correctly_set_and_manage_notification_priority">Правильно выполняйте расстановку приоритетов уведомлений и +управление ими +</h3> + +<p>Android поддерживает флаг приоритета для уведомлений. Это флаг позволяет +влиять на позицию уведомления среди других уведомлений и +гарантировать, +что пользователь в первую очередь увидит самые важные уведомления. При отправке уведомления можно выбрать один +из +следующих уровней приоритета:</p> +<table> + <tr> + <td class="tab0"> +<p><strong>Приоритет</strong></p> +</td> + <td class="tab0"> +<p><strong>Использование</strong></p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>MAX</code></p> +</td> + <td class="tab1"> +<p>Применяйте для наиболее важных и неотложных уведомлений, извещающих пользователя +о ситуации, +критичной по времени или такой, на которую необходимо отреагировать, чтобы продолжить +выполнение задачи.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>HIGH</code></p> +</td> + <td class="tab1"> +<p>Применяйте, в основном, для передачи важной информации, например, о сообщениях или событиях +в чате с содержимым, представляющим особый интерес для пользователя. +Уведомления с высоким приоритетом отображаются как уведомления heads-up.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>DEFAULT</code></p> +</td> + <td class="tab1"> +<p>Применяйте для всех уведомлений, не входящих ни в одну из описанных здесь категорий.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>LOW</code></p> +</td> + <td class="tab1"> +<p>Применяйте для уведомлений, которые должны быть переданы пользователю, но +не являются неотложными. Низкоприоритетные уведомления обычно появляются в конце списка, +что позволяет использовать их +для передачи информации, представляющей всеобщий интерес и не имеющей конкретной направленности. Например, если пользователь подписался +на новости, + эта информация не должна иметь преимущество перед неотложными или адресными +сообщениями.</p> +</td> + </tr> + <tr> + <td class="tab1"> +<p><code>MIN</code></p> +</td> + <td class="tab1"> +<p>Применяйте для уведомлений, с контекстной или фоновой информацией, такой как прогноз погоды, или с информацией, +связанной с местоположением пользователя. +Уведомления с минимальным приоритетом не отображаются в строке состояния. Пользователь +обнаруживает их при раскрытии панели уведомления.</p> +</td> + </tr> +</table> + + +<h4 id="how_to_choose_an_appropriate_priority"><strong>Как выбрать +подходящий +приоритет</strong></h4> + +<p>При выдаче уведомлений с приоритетами <code>DEFAULT</code>, <code>HIGH</code> и <code>MAX</code> существует риск, что деятельность +пользователя будет прервана +в самом разгаре. Чтобы не раздражать пользователей вашего приложения, применяйте приоритеты этих уровней для +уведомлений,</p> + +<ul> + <li> имеющих отношение к другим пользователям;</li> + <li> быстро теряющих актуальность;</li> + <li> способных немедленно повлиять на поведение пользователя в реальном мире.</li> +</ul> + +<p>Уведомления с приоритетом <code>LOW</code> и <code>MIN</code> могут представлять определенную ценность +для пользователя. Значительное количество, если не большинство, уведомлений не требует немедленной +реакции пользователя, но, тем не менее, содержит информацию, которую пользователь сочтет +ценной, когда решит +просмотреть поступившие уведомления. Приоритеты уровней <code>LOW</code> и <code>MIN</code> + следует присваивать уведомлениям,</p> + +<ul> + <li> не имеющим прямого отношения к другим пользователям;</li> + <li> долго не теряющим актуальность;</li> + <li> содержащим информацию, способную заинтересовать пользователя, если он решит +просмотреть их в свободное время.</li> +</ul> + + + <img src="{@docRoot}images/android-5.0/notifications/notifications_pattern_priority.png" alt="" width="700" /> + + +<h3 style="clear:both" id="set_a_notification_category">Определите категорию +уведомления</h3> + +<p>Если уведомление попадает в одну из заранее определенных категорий (см. +ниже), укажите его +категорию. Процессы системного пользовательского интерфейса, например, панель уведомления (или любой +другой процесс-слушатель +уведомлений) могут воспользоваться этой информацией при классификации и фильтрации уведомлений.</p> +<table> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p> +</td> + <td> +<p>Входящий звонок (голосовой или по видеосвязи) или алогичный запрос синхронной +связи</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_MESSAGE">CATEGORY_MESSAGE</a></code></p> +</td> + <td> +<p>Входящее личное сообщение (SMS-сообщение, мгновенное сообщение и т. д.)</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_EMAIL">CATEGORY_EMAIL</a></code></p> +</td> + <td> +<p>Асинхронное массовое сообщение (по электронной почте)</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_EVENT">CATEGORY_EVENT</a></code></p> +</td> + <td> +<p>Событие в календаре</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_PROMO">CATEGORY_PROMO</a></code></p> +</td> + <td> +<p>Промоакция или реклама</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_ALARM">CATEGORY_ALARM</a></code></p> +</td> + <td> +<p>Сигнал будильника или таймера</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_PROGRESS">CATEGORY_PROGRESS</a></code></p> +</td> + <td> +<p>Информация о ходе выполнения длительной фоновой операции</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SOCIAL">CATEGORY_SOCIAL</a></code></p> +</td> + <td> +<p>Новости, поступившие из социальной сети или касающиеся совместного использования ресурсов</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_ERROR">CATEGORY_ERROR</a></code></p> +</td> + <td> +<p>Ошибка в фоновой операции или статусе аутентификации</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_TRANSPORT">CATEGORY_TRANSPORT</a></code></p> +</td> + <td> +<p>Управление передачей медиаданных для воспроизведения</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SYSTEM">CATEGORY_SYSTEM</a></code></p> +</td> + <td> +<p>Обновление статуса системы или устройства. Зарезервировано для использования системой.</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_SERVICE">CATEGORY_SERVICE</a></code></p> +</td> + <td> +<p>Индикация работающей фоновой службы</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_RECOMMENDATION">CATEGORY_RECOMMENDATION</a></code></p> +</td> + <td> +<p>Конкретная и привязанная ко времени рекомендация относительно одного объекта. Например, приложение +новостей может +порекомендовать пользователю, какую новость читать следующей.</p> +</td> + </tr> + <tr> + <td> +<p><code><a +href="/reference/android/app/Notification.html#CATEGORY_STATUS">CATEGORY_STATUS</a></code></p> +</td> + <td> +<p>Текущая информация о статусе устройства или контекста</p> +</td> + </tr> +</table> + +<h3 id="summarize_your_notifications">Суммируйте уведомления</h3> + +<p>Если при наличии ожидающего уведомления определенного типа приложение пытается отправить новое +уведомление того же типа, объедините их в одно сводное уведомление от этого приложения. Не +создавайте новый объект.</p> + +<p>Сводное уведомление формирует сводное описание и дает пользователю возможность +понять, сколько +имеется ожидающих уведомлений того или иного типа.</p> + +<div class="col-6"> + +<p><strong>Неправильно</strong></p> + <img src="{@docRoot}images/android-5.0/notifications/Summarise_Dont.png" alt="" width="311px" /> +</div> + +<div> +<p><strong>Правильно</strong></p> + + <img src="{@docRoot}images/android-5.0/notifications/Summarise_Do.png" alt="" width="311px" /> +</div> + +<p style="clear:left; padding-top:30px; padding-bottom:20px">Разработчик может сообщить +подробности об отдельных уведомлениях, образующих + сводное, используя расширенную компоновку для резюме. Такой подход позволит пользователям +лучше разобраться, какие +уведомления ожидают прочтения, и достаточно ли они интересны, чтобы ознакомиться с ними +более подробно в + соответствующем приложении.</p> +<div class="col-6"> + <img src="{@docRoot}images/android-5.0/notifications/Stack.png" style="margin-bottom:20px" alt="" width="311px" /> + <p class="img-caption"> + Расширенное и сжатое сводное уведомление (с использованием <code>InboxStyle</code>) + </p> +</div> + +<h3 style="clear:both" id="make_notifications_optional">Сделайте уведомления +необязательными</h3> + +<p>В распоряжении пользователей всегда должен быть метод управления уведомлениями. Предоставьте пользователю возможность +отключать уведомления, поступающие от вашего приложения, +или изменять способы оповещения, такие как звуковой сигнал и +вибрация. + С этой целью следует предусмотреть пункт настройки уведомлений в настройках приложения.</p> + +<h3 id="use_distinct_icons">Используйте отчетливые значки</h3> +<p>Беглого взгляда на область уведомлений должно быть достаточно, чтобы распознать +типы +ожидающих уведомлений.</p> + +<div class="figure"> + <img src="{@docRoot}images/android-5.0/notifications/ProductIcons.png" alt="" width="420" /> +</div> + + <div><p><strong>Правильно</strong></p> + <p>Рассмотрите уже существующие значки уведомлений от приложений Android и создайте +собственные, + достаточно уникальные.</p> + + <p><strong>Правильно</strong></p> + <p>Придерживайтесь подходящего <a href="/design/style/iconography.html#notification">стиля значков уведомления</a> + для мелких значков, и + <a href="/design/style/iconography.html#action-bar">стиля строки +действий</a> Material Light для значков + действий.</p> +<p ><strong>Правильно</strong></p> +<p >Стремитесь к визуальной простоте значков, избегайте излишних трудноразличимых +деталей.</p> + + <div><p><strong>Неправильно</strong></p> + <p>Применяйте к мелким значкам и значкам действий дополнительные альфа-эффекты +(постепенное появление/исчезание). + К их краям может быть применено сглаживание, но, поскольку в Android эти значки +служат масками (то есть, + используется только альфа-канал), изображение, как правило, должно отображаться полностью +непрозрачным.</p> + +</div> +<p style="clear:both"><strong>Неправильно</strong></p> + +<p>Чтобы ваше приложение отличалось от других, используйте цвет. Значки уведомлений должны +представлять собой изображение белого цвета на прозрачном фоне.</p> + + +<h3 id="pulse_the_notification_led_appropriately">Правильно используйте индикатор +уведомлений</h3> + +<p>На многих устройствах Android имеется светодиодный индикатор уведомлений, +информирующий пользователя о +событиях, когда экран выключен. Уведомления с приоритетом <code>MAX</code>, +<code>HIGH</code> или <code>DEFAULT</code> должны +вызывать свечение индикатора, а уведомления с низким приоритетом (<code>LOW</code> и +<code>MIN</code>) не должны.</p> + +<p>Возможности пользователя управлять уведомлениями должны распространяться на светодиодный индикатор. Когда разработчик использует +DEFAULT_LIGHTS, +индикатор светится белым цветом. Ваши уведомления не должны вызывать свечение другим +цветом, если +пользователь не указал этого явным образом.</p> + +<h2 id="building_notifications_that_users_care_about">Создание уведомлений, + важных для пользователя</h2> + +<p>Чтобы пользователям понравилось ваше приложение, необходимо тщательно +продумать его уведомления. +Уведомления — это голос приложения. Они определяют его +индивидуальность. Ненужные или +несущественные уведомления раздражают пользователя и заставляют его возмущаться тем, как много +внимания требует от него +приложение. Поэтому необходимо применять уведомления взвешенно.</p> + +<h3 id="when_to_display_a_notification">Ситуации, в которых следует показывать уведомления</h3> + +<p>Чтобы создать приложение, от работы с которым пользователи получат удовольствие, необходимо +осознать, что внимание пользователя + является ресурсом, требующим бережного обращения. Система уведомлений +Android была разработана +так, чтобы как можно меньше отвлекать пользователя. +Однако +вы должны отдавать себе отчет в том, что уведомления прерывают +деятельность пользователя. +Планируя уведомления, спрашивайте себя, достаточно ли они важны, чтобы +послужить основанием для такого прерывания. В случае сомнений предоставьте пользователю возможность запросить +в настройках приложения получение уведомления или измените +приоритет уведомления на <code>LOW</code> или <code>MIN</code>, чтобы +не отвлекать пользователя от +текущих занятий.</p> + + <img src="{@docRoot}images/android-5.0/notifications/TimeSensitive.png" alt="" width="311px" /> + <p style="margin-top:10px" class="img-caption"> + Примеры уведомлений, быстро теряющих актуальность + </p> + +<p>Хотя правильно работающие приложения ведут себя неназойливо, бывают ситуации, +заслуживающие того, чтобы приложение по своей инициативе прервало деятельность пользователя уведомлением.</p> + +<p>Отправляйте уведомления только в случае <strong>событий, требующих неотложной реакции</strong>, особенно + если эти синхронные события <strong>имеют прямое отношение к другим пользователям</strong>. Например, +чат + представляет собой форму синхронного общения в реальном времени, — другой пользователь +с нетерпением ожидает вашего ответа. События в календаре являются еще одним хорошим примером ситуации, в которой следует выдать +уведомление и завладеть + вниманием пользователя, потому что в приближающееся календарное событие часто +вовлечены другие люди.</p> + +<h3 style="clear:both" id="when_not_to_display_a_notification">Ситуации, +в которых не следует показывать уведомления</h3> + +<div class="figure" style="margin-top:60px"> + <img src="{@docRoot}images/android-5.0/notifications/AntiSample1.png" alt="" width="311px" /> +</div> + +<p>В большинстве остальных случаев уведомления неуместны.</p> + +<ul> + <li> Не следует извещать пользователя о событиях, не имеющих отношения +к нему конкретно, или + не теряющих актуальность со временем. Например, асинхронные +и безадресные новости, + циркулирующие в социальных сетях, как правило, не требуют немедленного +привлечения внимания. Пользователям, + действительно интересующимся таким новостями, предоставьте возможность запросить соответствующие уведомления.</li> + <li> Не генерируйте уведомление, если релевантная свежая информация уже находится +на экране. Вместо этого + воспользуйтесь интерфейсом самого приложения, чтобы донести до пользователя новую информацию +непосредственно в контексте. + Например, приложение-чат не должно генерировать системные уведомления, +пока пользователь активно общается с собеседником.</li> + <li> Не отвлекайте пользователя ради низкоуровневых технических действий, такие как сохранение +или синхронизация информации или обновление приложения, если приложение или система способны выполнить задачу +без вмешательства пользователя.</li> + <li> Не отвлекайте пользователя, чтобы проинформировать его об ошибке, если +приложение может восстановиться после нее самостоятельно, не требуя от пользователя +никаких действий.</li> + <li> Не создавайте уведомления, не имеющие осмысленного содержимого и +всего лишь рекламирующие ваше +приложение. Уведомление должно нести полезную, актуальную и новую информацию. Не следует +использовать его + исключительно для презентации приложения.</li> + <li> Не создавайте избыточные уведомления только для того, чтобы продемонстрировать свой бренд +пользователям. + Такие уведомления раздражают и отталкивают аудиторию. Лучший +способ сообщать + новую информацию небольшими порциями и поддерживать связь пользователей +с вашим + приложением заключается в том, чтобы разработать виджет, который они смогут поместить на + главный экран.</li> +</ul> + +<h2 style="clear:left" id="interacting_with_notifications">Взаимодействие с +уведомлениями</h2> + +<p>Уведомления обозначаются значками в строке состояния. Чтобы получить к ним доступ, +следует открыть +панель уведомлений.</p> + +<p>Если коснуться уведомления, откроется соответствующее приложение с подробным содержимым, +связанным с эти уведомлением. +Если провести пальцем по уведомлению влево или вправо, оно будет удалено из панели.</p> + +<h3 id="ongoing_notifications">Постоянные уведомления</h3> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/MusicPlayback.png" alt="" width="311px" /> + <p class="img-caption"> + Постоянные уведомления при воспроизведении музыки + </p> +</div> +<p>Постоянные уведомления информируют пользователя о текущих фоновых +процессах. +Например, плееры сообщают через систему уведомлений информацию о дорожке, +воспроизводимой в данный момент, и +это продолжается, пока пользователь не остановит воспроизведение. Кроме того, постоянные уведомления могут +информировать пользователя +о ходе выполнения длительных задач, таких как загрузка файла или кодирование видеоданных. Пользователь не может вручную +удалить постоянное уведомление из панели уведомлений.</p> + +<h3 id="ongoing_notifications">Воспроизведение медиаданных</h3> +<p>В Android 5.0 на экране блокировки не отображаются элементы управления воспроизведением от устаревшего +класса {@link android.media.RemoteControlClient}. Однако на нем <em>отображаются</em> уведомления, так что теперь каждое +уведомление приложения о воспроизведении является для пользователей основным +способом управления воспроизведением в заблокированном состоянии. В результате у приложения появляется больше возможностей +управлять тем, какие +кнопки отображать, и каким образом. При этом с точки зрения пользователя система ведет себя непротиворечиво, +независимо от того, заблокирован ли экран.</p> + +<h3 style="clear:both" +id="dialogs_and_toasts_are_for_feedback_not_notification">Диалоговые окна +и всплывающие уведомления</h3> + +<p>Приложение, не отображаемое на экране, не должно генерировать диалоговое окно или всплывающее +уведомление. Диалоговое окно или всплывающее уведомление + должно появляться исключительно в качестве немедленной реакции на действия пользователя +в приложении. +Более подробные рекомендации по использованию диалоговых окон и всплывающих уведомлений см. в разделе +<a href="/design/patterns/confirming-acknowledging.html">Подтверждение и уведомление</a>.</p> + +<h3>Упорядочение уведомлений по степени важности</h3> + +<p>По своей сути уведомления — это новости, и поэтому они принципиально отображаются в +обратном хронологическом порядке. +При этом обязательно принимается во внимание +<a href="#correctly_set_and_manage_notification_priority">приоритет</a>, установленный приложением.</p> + +<p>Уведомления являются важной составляющей экрана блокировки и отображаются на видном месте +каждый +раз, когда включается дисплей устройства. На экране блокировки мало свободного места, поэтому +исключительно важно +выявлять неотложные или наиболее релевантные уведомления. По этой +причине Android применяет +сложный алгоритм сортировки уведомлений, в котором учитываются</p> + +<ul> + <li> временная метка и приоритет, установленный приложением;</li> + <li> тот факт, что уведомление только что оповестило пользователя звуковым сигналом +или вибрацией (иными словами, + если телефон издает звуки, и пользователь хочет узнать, в чем +дело, то на экране блокировки + должен находиться ответ, понятный с первого взгляда);</li> + <li> пользователи, связанные с уведомлением при помощи {@link android.app.Notification#EXTRA_PEOPLE}, + и, в частности, присутствие их в списке помеченных контактов.</li> +</ul> + +<p>Чтобы воспользоваться преимуществами этой сортировки наилучшим образом, думайте в первую очередь о создании +удобных условий для +пользователя, и не нацеливайтесь на конкретное место в рейтинге.</p> + + <img src="{@docRoot}images/android-5.0/notifications/AntiSample3.png" alt="" width="700px" /> + + <p class="img-caption" style="margin-top:10px">Уведомления от Gmail имеют +приоритет DEFAULT, поэтому они + обычно оказываются ниже уведомлений от приложений мгновенного обмена сообщениями, таких как Hangouts, но +поднимаются в списке + на некоторое время, когда поступают новые сообщения. + </p> + + +<h3>Уведомления на экране блокировки</h3> + +<p>Поскольку уведомления видны на экране блокировки, защита конфиденциальной информации пользователей приобретает +особо +важное значение. Уведомления нередко содержат частную информацию, и они +не должны быть доступны +каждому, кто взял в руки устройство и включил дисплей.</p> + +<ul> + <li> У устройств, экран блокировки которых защищен (при помощи PIN-кода, графического ключа или пароля), интерфейс имеет + общедоступную и закрытую части. Элементы общедоступного интерфейса отображаются на защищенном экране блокировки и + следовательно, видны всем. Закрытый интерфейс находится "позади" экрана блокировки и + доступен только пользователю, выполнившему вход в устройство.</li> +</ul> + +<h3>Возможности пользователя контролировать информацию, отображаемую на экране блокировки</h3> +<div class="figure" style="width:311px"> + <img src="{@docRoot}images/android-5.0/notifications/LockScreen@2x.png" srcset="{@docRoot}images/android-5.0/notifications/LockScreen.png 1x" alt="" width="311px" /> + <p class="img-caption"> + Уведомления на экране блокировки с содержимым, отображаемым после того, как пользователь разблокирует устройство. + </p> +</div> + +<p>При настройке защиты экрана блокировки пользователь может предпочесть, + чтобы конфиденциальные данные не отображались на защищенном экране блокировки. В этом случае системный пользовательский интерфейс +учитывает <em>уровень видимости</em> уведомления, чтобы выяснить, какую информацию +можно отображать без риска.</p> +<p> Чтобы установить уровень видимости, вызовите +<code><a +href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code> +и укажите одно из следующих значений:</p> + +<ul> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_PUBLIC">VISIBILITY_PUBLIC</a></code>. +Содержимое уведомления отображается полностью. + Это значение принимается системой по умолчанию, если уровень видимости не указан.</li> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>. +На экране блокировки отображается основная информация о наличии уведомления, включая его +значок и название приложения, отправившего его. Прочие данные уведомления скрыты. +Здесь уместно дать разработчику пару рекомендаций. + <ul> + <li> Если вы хотите реализовать отдельную общедоступную версию уведомления, +которую система будет отображать на экране блокировки, создайте замещающий +объект Notification в поле<code><a +href="/reference/android/app/Notification.html#publicVersion">Notification.publicVersion</a></code>. + + <li> Этот параметр предоставляет приложению возможность создавать "цензурированную" версию +содержимого, достаточно информативную, но скрывающую личную информацию. Рассмотрим в качестве примера приложение для отправки +SMS-сообщений. Его уведомления содержат текст SMS-сообщения и имя и контактный значок отправителя. +Такое уведомление должно иметь атрибут <code>VISIBILITY_PRIVATE</code>, но его версия <code>publicVersion</code> может +содержать полезную информацию, например, "3 новых сообщения", без уточняющих +подробностей. + </ul> + </li> + <li><code><a +href="/reference/android/app/Notification.html#VISIBILITY_SECRET">Notification.VISIBILITY_SECRET</a></code>. Отображается минимум информации, +даже без значка уведомления.</li> +</ul> +<h2 style="clear:both" id="notifications_on_android_wear">Уведомления на +Android Wear</h2> + +<p>По умолчанию уведомления и их <em>действия</em> передаются на носимые устройства. +Разработчики могут управлять тем, какие уведомления следует передавать с +телефона на часы, +и наоборот. У разработчиков также есть возможность управлять передачей действий. Если +приложение включает в себя +действия, которые невозможно выполнить одним касанием, нужно либо скрывать их +в уведомлениях, отображаемых на носимом +устройстве, либо обеспечить их привязку к приложению под управлением Android Wear, позволив пользователю +совершать действие +на часах.</p> + +<h4>Передача уведомлений и действий на другое устройство</h4> + +<p>Подключенное устройство, например, телефон, может передавать уведомления на носимое устройство, +чтобы они отображались и на нем. Аналогичным образом можно передавать действия, чтобы пользователь мог реагировать +на уведомления непосредственно на носимом устройстве.</p> + +<p><strong>Передавайте</strong></p> + +<ul> + <li> новые мгновенные сообщения;</li> + <li> действия, выполняемые одним касанием, например, "+1", "Лайк", "Сердечко".</li> +</ul> + +<img src="{@docRoot}images/android-5.0/notifications/WearBasic.png" width="156px" height="156px" alt="" /> + +<p><strong>Не передавайте</strong></p> + +<ul> + <li> уведомления о новых подкастах;</li> + <li> действия, соответствующие функциям, недоступным на часах.</li> +</ul> + + + +<p><h4>Уникальные действия, определяемые для носимых устройств</h4></p> + +<p>Некоторые действия можно выполнить только на носимых устройствах, например:</p> + +<ul> + <li> выбор из списка шаблонных ответов, например, "Скоро вернусь"</li> + <li> действие "Открыть на телефоне";</li> + <li> действия "Прокомментировать" или "Ответить", открывающие окно речевого ввода;</li> + <li> действия, запускающие приложения, специфичные для Android Wear.</li> +</ul> + +<img src="{@docRoot}images/android-5.0/notifications/ReplyAction.png" width="156px" height="156px" alt="" /> |