понедельник, 6 июля 2015 г.

Snackbar - логічний фінал Toast


Сьогодні поговоримо про компонент з Android design support library під назвою “Snackbar”.

Snackbar - логічний фінал Toast

“Providing lightweight, quick feedback about an operation is a perfect opportunity to use a snackbar.”
Snackbar компонент доступний в design support library. Використовуючи Snackbar, ми можемо показувати швидкі повідомлення в нижній частині екрану (в осносному). Даний компонент дуже схожий на Toast, але більш гнучкий:
  • Він автоматично зникає після таймауту чи після взаємодії з користувачем.
  • Опціонально містить в собі дію.
  • Можна відмінти FAB свайпом з екрану.
  • На відміну від Toast перекриває екран, а не накладається
  • Являється частиною UI та є контексозалежним.
  • Тільки один snackbar може відображатися в один проміжок часу.
Snackbar успадквує ті ж методи та атрибути що й Toast, наприклад LENGTH_LONG та LENGTH_SHORT для налаштування тривалості.

Синтаксис:

Поглянемо на маленький приклад:




Snackbar.make(view, message, duration)
       .setAction(action message, click listener)
       .show();
Методи:
  • make() – Змусити Snackbar відображати повідомлення;
  • setAction() – Налаштувати дію;
  • show() – Показати Snackbar;
Арибути:
  • Перший параметр методу make() це view, snackbar спробує знайти батьківський view для утримання snackbar. Snackbar прогляне все дерево шарів і закріпиться на верхньому.
  • Як вже згадувалось раніше, аргумент тривалості такий же як і в Toast, але тільки LENGTH_SHORT чи LENGTH_LONG, так тут не можна явно вказати тривалість.

Приклад:









Snackbar.make(rootlayout, "Hello SnackBar!", Snackbar.LENGTH_SHORT)
       .setAction("Undo", new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               // Perform anything for the action selected
           }
       })
       .show();

Тут, кореневий шар (layout) framelayout має FAB, який в свою чергу викликає Snackbar.
Натисніть на FAB та перевірте результат:

Snackbar framelayout

Так, все працює але на жаль не так як мало б взаємодіяти з UX. Насправді снекбар мав би зсунути FAB трох вверх, як зображено нижче, а також сказано в документації:
Having a CoordinatorLayout in your view hierarchy allows Snackbar to enable certain features, such as swipe-to-dismiss and automatically moving of widgets like FloatingActionButton.
Ми поговоримо про CoordinatorLayout в наступній статті.

Snackbar with CoordinatorLayout

Налаштування Snackbar

Ми можемо використовувати деякі додаткові налаштування в snackbar наприклад: setActionTextColor та setDuration:









Snackbar.make(rootlayout, "Hello SnackBar!", Snackbar.LENGTH_SHORT)
       .setAction("Undo", new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               // Perform anything for the action selected
           }
       })
       .setActionTextColor(R.color.material_blue)
       .setDuration(4000).show();
Завантажити приклад можна за посиланням: https://github.com/PareshMayani/DesignSupportLibraryExamples
Джерела:

Підсумкт

Ми трохи поговорили про Snackbar, що функціонує подібно до TOAST але з більш ширшими та гнучкішими налаштуваннями, він може також вміщувати в собі єдину дію та бути відхиленим простим свайпом з екрану або автоматично після закінчення виділеного інтервалу часу, чи навіть після взаємодії з користувачем.
Ми безумовно побачимо більше ефектів та поведінки завдяки підключенню CoordinatorLayout, але це буде в наступній статті.

source

Комментариев нет:

Отправить комментарий