вторник, 21 июля 2015 г.

Стилізація Snackbar

Вітаю, ми повертаємось до наступника діда-Toast нового молодіжного і сучасного Snackbar. Сьогодні ми розглянемо декілька надзвичайно вражаючих можливостей з бібліотеки підтримки (design support library) і собливо Snackbar.
Stay tuned!

Стилізація Snackbar

В попередній публікації, ми розібралися, як користуватися Snackbar, а сьогодні ми поглянемо як можна кастомізувати snackbar та відобразити його іншим кольором, стилізованим під наші потреби, щоб це мало значення для користувача, наприклад відображати червоним помилки.
Виглядатиме наш додаток так:

Styling snackbar

Styling snackbar 1

Робота з мережею в Android: OkHttp, Volley та Gson

Програмуючи під Android є речі, які ви просто не можете уникати: робота з мережею (networking). Що б це не було: завантаження зображення, робота з API чи просто 1 байт з інтернету - все це робота з мережею.
Враховуючи те на скільки робота з мережею є важливою та фундаментальною в розробці, одне з основних питань з якими стикаються Android розробники це вибір правильного рішення для реалізації конкретної задачі.
Причиною того, що нам доводиться використовувати сторонні бібліотеки є неспроможність android фреймворку реалізувати нормально роботу з мережею, ще з давніх часів, коли панували такі динозаври як Froyo та Gingerbread, доводилося писати раз за разом один і той же код. Враховуючи динаміку з якою розвивався Android було логічно спробувати написати щось своє, чи використати готове рішення від сторонніх розробників, які все розвивались і розвивались.

In the old days networking on Android was a nightmare, nowadays the problem is to find out which solution best fits the project necessities.
В цій статті ми поговоримо про конкретні рішення на базі OkHttp, Volley та Gson.

Для вдалого експерименту припустимо, що для обміну даними з сервером ви використовуєте JSON, працюєте в Android Studio з Gradle.
OkHttp це достатньо новий, швидкий та ефективний Http клієнт, який підтримує HTTP/2 та SPDY і виконує за вас безліч однотипної роботи. Прекрасний спосіб зрозуміти наскільки важко працювати з мережею це поглянути на все те що OkHttp для установки звязку, кешуваання і т.д. OkHttp працює як транспортний рівень.
OkHttp використовує Okio, бібліотекою, що доповнює  java.io and java.nio та допомагає легше отримати доступ, зберігати та користуватися вашою інформацією.
І OkHttp, і Okio розроблені хлопцями з Square.
Volley це бібліотека, що полегшує роботу з побутовими задачами мережі. Бере на себе запити, завантаження, кешування, поточність, синхронізацію та інші штуки. Легко працювати з JSON, зображеннями, кешем, текстом та дозволяє кастомізованим.
Volley була спроектована для RPC стилю роботи з мережею, що популяризує UI. Являється прекрасною альтернативою для простих, коротких задач.
Volley за замовчуванням використовується на транспортному рівні як Apache Http stack на Froyo та HttpURLConnection stack на Gingerbread і вище. Біда в тому, що є деякі проблеми з http stack на різних версіях Android.
Volley дає можливість простіше налаштувати OkHttp як транспортний рівень.
Volley була розроблений компанією Google.
Gsonце бібліотека серіалізації та десеріалізації JSON, що використовує рефлекцію для попляризації вашої Java моделі об'єктів з об'єктів JSON.
Gson була розроблений компанією Google.

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

Кнопка Google Plus в додатках на Android

title_plus_one_button
Поговоримо про інтеграцію кнопки Google’s +1 з додатками на базі Android.

Перше питання, - "Навіщо?". Все заради популярності вашого додатку. Дана кнопка допоможе підвищи рейтинг в Play Store.
Перш за все, потрібно додати бібліотеку у ваш проект або ж залежність у файл gradle.

EditText плаваючі заголовки: Бібліотека підтримки Android

edittext_floating_labels_title
Сьогодні, поговоримо про EditText Floating Labels в Android додатках.

Новий TextInputLayout дозволяє нам запаковувати EditText для можливості показувавти плаваючі заголовки над полями EditText. Такж ми маємо можливість показувати помилки під полем EditText. Коил форма EditText в фокусі, підказка піднімається над view в ліву частину.
Перш за все нам необхіжно додати бібліотеку або прописати залежність в файлі gradle.

четверг, 16 июля 2015 г.

Android Studio на SSD

Маю ноутбук HP envy 4-1152er з SSD диском, але на жаль він всього-на-всього на 32GB і так вийшло, що Android Studio займає занадто багато місця. Якщо у вас така ж проблема то зараз ви дізнаєтесь як з цим боротися.
Android Studi встановлюємо на диск D.

SDK

1. SDK переносимо на диск D, в зручну для вас директорію, в мене це D:\Program Files\android-sdk.
2. В налаштуваннях за допомогою пошуку знаходимо наш sdk і змінюємо на нову.
3. Зберігаємо налаштування:


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

Вступ до RxJava для Android #1

Сам я мав деякі сумніви щодо реактивного програмування і вирішив докладно розібратися в даному полі, а заодно і донести свої знання до громади, може комусь і знадобиться.

RxJava - це бібліотека реактивного програмування, що дозволяє вам представити будь-що у вигляді асинхронного потоку даних, який може бути створений в будь-якому потоці, може бути функціонально трансформований та бути використаний чим завгодно.
Реактивне програмування - парадигма програмування, орієнтована на потоки даних і поширення змін. Це означає, що повинна існувати можливість легко висловлювати статичні і динамічні потоки даних, а також те, що виконувана модель повинна автоматично поширювати зміни крізь потік даних.
Відмовостійкість, орієнтованість на події і масштабованість - чотири принципи нині популярного реактивного програмування. Саме дотримуючись їх створюється backend великих систем з одночасною підтримкою десятків тисяч з'єднань.
Простота, гнучкість і розширюваність коду - принципи, які можна закріпити за реактивним UI.


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