Статусная строка андроид что это

Android для чайников №3. Строка состояния

Евгений Вильдяев

Один из самых функциональных и информативных элементов в Android-смартфоне.

Здравствуйте, уважаемые читатели, мы продолжаем нашу серию статей для начинающих пользователей. Сегодня речь пойдет о строке состояния, важном элементе Android-смартфона. Строка состояния находится в верхней части экрана, в ее правом углу расположены часы и индикатор батареи, а в левом — иконки с уведомлениями. Фактически, при взгляде на строку состояния вам сразу становится понятно, есть ли у вас новые уведомления или нет.

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

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

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

Также в отдельных оболочках (TouchWiz, Emotion UI) есть отдельный ползунок регулировки яркости, управлять подсветкой смартфона с его помощью очень удобно.

Заключение

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

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

Источник

Что собой представляет строка состояния Android?

В операционной системе Android, как и в iOS, и в Windows 10 Mobile или Windows Phone есть множество способов контроля и регулировки работы устройства. Один из самых простых из них — через раздел «настройки». В этом приложении пользователь может следить за состоянием устройства и получать подробную информацию обо всех процессах, происходящих в смартфоне. Но есть способ контроля куда более простой. Многие прекрасно знают, о чём пойдёт речь. Но вряд ли придавали этой опции большое значение. Итак, самый простой способ контроля за телефоном – строка состояния «Андроид».

Как выглядит?

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

Причём многие производители любят устанавливать в свои смартфоны различные надстройки: так называемые «оболочки». И эти самые оболочки могут менять дизайн строки состояния

Что содержится?

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

Читайте также:  Зарядка планшета андроид от компьютера

Плюс ко всему, строка состояния отображает текущее время, а иногда и дату.

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

Например, приложение социальной сети Instagram, если включить соответствующие настройки, выносит в строку состояния уведомления о новых подписчиках, лайках на фото или сообщениях в Direct. Благодаря этому пользователи всегда знают, что нового происходит в их аккаунте.

А приложение видеохостинга YouTube выносит в раздел «Строка состояния Android» уведомления о новых опубликованных видео.

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

Естественно, большинство приложений предоставляет возможность всем пользователям настраивать, какие именно уведомления будут выноситься в раздел «Строка состояния».

К чему даёт доступ?

Из графы «Строка состояния» можно «вытянуть» шторку уведомлений, в которой располагается множество различных функций, начиная от включения и выключения звуковых режимов, заканчивая активацией режима полёта.

Многие производители имеют тенденцию к установке собственных надстроек на начальную версию Android. Ещё эти надстройки называют оболочками.

Например, продолжительный период времени Samsung использовала оболочку TouchWiz, которую буквально ненавидели многие пользователи за наличие огромного количества неисправностей и высокого потребления оперативной памяти устройства. Теперь же компания перешла на интерфейс Samsung UX.

Так вот, эти оболочки часто изменяют шторку уведомлений до неузнаваемости. Причем не только с точки зрения дизайна, но и с точки зрения функционала. К примеру, разработчики той же Samsung очень любят выносить множество небольших, но важных функций из раздела «Настройки» в бар-панель шторки. Более того, из ее уведомлений можно выйти в сам раздел настроек устройства. К слову, многие считают это довольно удобным.

Какие бывают проблемы с ней?

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

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

Во-вторых, помогает перезагрузка устройства, которая с большей вероятностью вернёт строку состояния на прежнее место.

В-третьих, возможно, что проблема кроется в сторонних надстройках, которые установлены самим пользователем. Так называемые «лаунчеры» имеют особенность изредка скрывать раздел «Строка состояния» c дисплея. Поэтому будьте внимательны с устанавливаемым софтом.

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

В итоге получается, что строка состояния Android – действительно полезный инструмент, который помогает пользователям не только отслеживать заряд батареи и скорость Интернет-соединения, но и следить за многими процессами, которые происходят в самом устройстве и в различных приложениях, которые на нём установлены.

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

И многие производители, понимая значимость строки состояния в Android OS, стараются дополнить её различными функциями и преобразовать так, чтобы им было ещё удобнее считывать с неё различные данные.

Источник

Android Notifications. Оповещения через Status Bar

Добрый день, хабровчане. Давно занимаюсь разработкой под Android и хотелось бы рассказать сообществу о правильном подходе к созданию уведомлений.

Читайте также:  Планшет не обновляет андроид

На хабре уже есть статья по уведомлениям в статус баре для андроид . В ней рассматриваются основы отображения стандартного и конфигурируемого layout в статус баре.

Ниже, помимо описанного ранее, мы рассмотрим добавление прогрессбара, обработку события по нажатию на уведомлений, различные варианты состояний уведомлений. Рассмотрим добавленный на днях в Compatibility library Notification.Builder. А также поговорим о рекомендациям по UI (design guidlines), которые гугл рекомендует соблюдать при создании уведомлений.

Guidlines
Как советуют разработчики Android в официальном гайдлайне

Когда показывать уведомления:
  • Мы показываем уведомления, когда не хотим отвлекать пользователя, перекрывая ему экран нашими диалогами или переходом на экран уведомления. Мы не отвлекаем пользователя, но при этом не лишаем его возможности узнать содержание нашего уведомления в любой момент.
  • Чаще всего уведомления не всплывают спонтанно, а появляются в моменты, когда пользователь ожидает реакции от приложения.
  • В первую очередь уведомления должны отражать события, зависящие от времени. Как то: события календаря, входящие сообщения, запросы из социальных сетей.
Когда не стоит показывать уведомления:
  1. Не нужно показывать уведомления для не важных псевдо-зависящих от времени событий. Например, новости из социальных сетей.
  2. Нет необходимости показывать то, что уже отображено в UI приложения.
  3. Не стоит отображать ход низкоуровневых операций, вроде обращения к БД.
  4. Если приложение быстро само исправляет ошибку, то не нужно вовсе показывать эту ошибку, тем более уведомлением.
  5. Не показывайте уведомления о сервисах, которые пользователь не может контролировать.
  6. Плохим подходом является создание большого числа уведомлений, с целью напоминать пользователю о приложении, показывая постоянно его иконку и имя.
Хорошая практика:

  1. По клику на уведомление, пользователю должен открываться соответствующий экран приложения. В некоторых случаях достаточно, чтобы по клику уведомление просто убиралось.
  2. Указание времени события в уведомлении, также является хорошим подходом.
  3. Рекомендуется схожие события складывать в одно уведомление, а не отображать на каждое событие своё.
  4. Всегда убирать из статус-бара уведомления, с которыми пользователь уже ознакомился и произвел соответствующие действия.
  5. Показывать маленькое превью уведомления при его создании в свёрнутом статус-баре
  6. Позволять пользователю отключать уведомления в настройках приложения.
  7. Использовать иконки, обозначающие принадлежность уведомления определённому приложению. Иконки делать монохромными. Для этого рекомндуется воспользоваться специальным онлайн-редактором
  8. В случае, если событие требует непосредственной реакции пользователя — вместо уведомлений использовать диалоги.
Архитектура:

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

В ней всегда хранятся ссылки на все созданные во время работы приложения уведомления, которые ещё отображены в статус-баре.

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

private static final String TAG = NotificationUtils. class .getSimpleName();

private static NotificationUtils instance;

private static Context context;
private NotificationManager manager; // Системная утилита, упарляющая уведомлениями
private int lastId = 0; //постоянно увеличивающееся поле, уникальный номер каждого уведомления
private HashMap notifications; //массив ключ-значение на все отображаемые пользователю уведомления

//приватный контструктор для Singleton
private NotificationUtils(Context context) <
this .context = context;
manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifications = new HashMap ();
>
/**
* Получение ссылки на синглтон
*/
public static NotificationUtils getInstance(Context context) <
if(instance== null ) <
instance = new NotificationUtils(context);
> else <
instance.context = context;
>
return instance;
>

* This source code was highlighted with Source Code Highlighter .

Создание уведомления с помощью NotificationCompat.Builder:
Для того чтобы воспользоваться классами, входящими в библиотеку поддержки прошлых версий (Compatibility library), нужно добавить в проект библиотеку из папки /extras/android/support/v4/android-support-v4.jar
Если же проект нацелен на Android 3.0 и выше, то добавлять ничего не нужно достаточно обратиться к Notification.Builder

public int createInfoNotification( String message) <
Intent notificationIntent = new Intent(context, HomeActivity. class ); // по клику на уведомлении откроется HomeActivity
NotificationCompat.Builder nb = new NotificationCompat.Builder(context)
//NotificationCompat.Builder nb = new NotificationBuilder(context) //для версии Android > 3.0
.setSmallIcon(R.drawable.ic_action_picture) //иконка уведомления
.setAutoCancel( true ) //уведомление закроется по клику на него
.setTicker(message) //текст, который отобразится вверху статус-бара при создании уведомления
.setContentText(message) // Основной текст уведомления
.setContentIntent(PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT))
.setWhen(System.currentTimeMillis()) //отображаемое время уведомления
.setContentTitle( «AppName» ) //заголовок уведомления
.setDefaults(Notification.DEFAULT_ALL); // звук, вибро и диодный индикатор выставляются по умолчанию

Notification notification = nb.getNotification(); //генерируем уведомление
manager.notify(lastId, notification); // отображаем его пользователю.
notifications.put(lastId, notification); //теперь мы можем обращаться к нему по id
return lastId++;
>

Читайте также:  Самсунг студио для андроид

* This source code was highlighted with Source Code Highlighter .

Создание уведомления с произвольным отображением (Custom layout):

/**
* Создание уведомления с прогрессбаром о загрузке
* @param fileName — текст, отображённый в заголовке уведомления.
*/
public int createDownloadNotification( String fileName) <
String text = context.getString(R. string .notification_downloading).concat( » » ).concat(fileName); //текст уведомления
RemoteViews contentView = createProgressNotification(text, context.getString(R. string .notification_downloading)); //View уведомления
contentView.setImageViewResource(R.id.notification_download_layout_image, R.drawable.ic_stat_example); // иконка уведомления
return lastId++; //увеличиваем id, которое будет соответствовать следующему уведомлению
>

/**
* генерация уведомления с ProgressBar, иконкой и заголовком
*
* @param text заголовок уведомления
* @param topMessage сообщение, уотображаемое в закрытом статус-баре при появлении уведомления
* @return View уведомления.
*/
private RemoteViews createProgressNotification( String text, String topMessage) <
Notification notification = new Notification(R.drawable.ic_stat_example, topMessage, System.currentTimeMillis());
RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.notification_download_layout);
contentView.setProgressBar(R.id.notification_download_layout_progressbar, 100, 0, false );
contentView.setTextViewText(R.id.notification_download_layout_title, text);

notification.contentView = contentView;
notification.flags = Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT | Notification.FLAG_ONLY_ALERT_ONCE;

Intent notificationIntent = new Intent(context, NotificationUtils. class );
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.contentIntent = contentIntent;

manager.notify(lastId, notification);
notifications.put(lastId, notification);
return contentView;
>

xml version =»1.0″ encoding =»utf-8″ ? >
LinearLayout xmlns:android =»http://schemas.android.com/apk/res/android»
android:layout_width =»fill_parent»
android:layout_height =»65sp»
android:padding =»10dp»
android:orientation =»vertical» >

LinearLayout
android:layout_width =»fill_parent»
android:layout_height =»wrap_content»
android:orientation =»horizontal» >

ImageView
android:id =»@+id/notification_download_layout_image»
android:layout_width =»wrap_content»
android:layout_height =»wrap_content»
android:src =»@drawable/ic_stat_example»
android:layout_gravity =»center_vertical»/>

TextView
android:id =»@+id/notification_download_layout_title»
style =»@style/NotificationTitle»
android:layout_width =»wrap_content»
android:layout_height =»wrap_content»
android:layout_alignParentTop =»true»
android:layout_marginLeft =»10dip»
android:singleLine =»true»
android:text =»notification_download_layout_title»
android:layout_gravity =»center_vertical»/>
LinearLayout >

ProgressBar
android:id =»@+id/notification_download_layout_progressbar»
style =»?android:attr/progressBarStyleHorizontal»
android:layout_width =»fill_parent»
android:layout_height =»wrap_content»
android:layout_marginTop =»4dp»
android:progress =»0″/>

в андроид 2.3 и выше ( API >10) был создан специальный ресурс, в котором системная тема указывает цвета текста уведомений. Из-за этого в старых версиях приходится использовать костыль:

В файл res/values/styles.xml прописываем:

xml version =»1.0″ encoding =»utf-8″ ? >
resources >
style name =»NotificationText» >
item name =»android:textColor» > ?android:attr/textColorPrimary item >
style >
style name =»NotificationTitle» >
item name =»android:textColor» > ?android:attr/textColorPrimary item >
item name =»android:textStyle» > bold item >
style >

А для поддержки API >10 Создаем файл res/values-v9/styles.xml и вписываем:

xml version =»1.0″ encoding =»utf-8″ ? >
resources >
style name =»NotificationText» parent =»android:TextAppearance.StatusBar.EventContent»/>
style name =»NotificationTitle» parent =»android:TextAppearance.StatusBar.EventContent.Title»/>
resources >

Теперь из кода нашего приложения обращаемся к утилите:

NotificationUtils n = NotificationUtils.getInstance(getActivity());
n.createInfoNotification( «info notification» );

Создаем уведомление с прогресс-баром:

int pbId = NotificationUtils.getInstance(getActivity()).createDownloadNotification( «downloading video» );

И во время выполнения потока постоянно обновляем прогресс вызовом:

В итоге получаем:

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

И напоследок маленькая хитрость:

Если не хотите дублирования в стеке одних и тех же Activity — поставьте в манифесте к нужной activity
android:launchMode=»singleTop»

Источник

Оцените статью