- Полный список
- 13 сентября 2016 г. Как создать собственную библиотеку для Android на примере BottomTabLayout
- Использование BottomTabLayout
- Публикация Android-библиотеки
- Создание модуля в Android Studio
- Добавление библиотеки на Bintray
- Добавление Android-библиотеки в jCenter
- Завершение
- 10 библиотек, о которых должен знать каждый Android-разработчик
- 1. Retrofit
- 2. Moshi
- 3. Chuck
- 4. Glide
- 5. ThreeTen
- 6. Timber
- 7. Room
- 8. RxJava
- 9. Android KTX
- 10. Dagger
- Заключение
Полный список
— разбираемся, зачем нужна библиотека Support Library
— на примере фрагментов используем библиотеку v4
Support Library – библиотека, которая на старых версиях Android делает доступными возможности новых версий. Например, фрагменты появились только в третьей версии (API Level 11). Если вы хотите использовать их в своем приложении, это приложение не будет работать на более старых версиях Android, т.к. эти старые версии никогда не слышали про класс android.app.Fragment. Какие тут есть выходы?
1) Добавить в код проверку версии системы и в зависимости от результата выполнять тот или иной код. Т.е. если версия 11 и выше, используем фрагменты, иначе Activity. Вполне выполнимо, но не совсем просто. Можно ошибиться и запутаться. Т.е. при запуске приложения на старых версиях приходится либо отказываться от новшеств и пользоваться тем, что есть, либо изобретать велосипед и реализовывать новшества самому.
2) Можно забить на старые версии и позиционировать свое приложение только для новых версий. Тогда теряется ощутимая часть потенциальных пользователей вашей программы. На момент написания этого материала на версии Android ниже третьей сидит 69,7% пользователей. Ощутимая такая потеря получится — больше, чем две трети! Конечно, со временем все перейдут на третью и последующие версии, и смогут использовать ваше приложение. Но к тому времени выйдут новые версии Android с новыми возможностями, вы их реализуете в своем приложении и, тем самым, снова отсеете часть пользователей. В общем, вырисовывается постоянная дискриминация пользователей по версии.
3) Использовать библиотеку Support Library. Она содержит классы — аналоги новшеств последних версий, которые будут работать на старых версиях.
На данный момент есть две библиотеки v4 и v13. Цифра здесь указывает минимальный API Level на котором можно использовать эту библиотеку. Т.е. приложение, использующее v4, может быть запущено на API Level >= 4 и ему будут доступны новшества, которые входят в эту библиотеку (например, фрагменты).
Библиотеки эти периодически обновляются, в них добавляются новые классы, реализующие новые возможности. Так что, если вы не нашли в них сейчас то, что вам нужно, вполне возможно, что это появится в будущем. Самый яркий пример – ActionBar. Его, к сожалению, в v4 пока нет. И я, честно говоря, не знаю, появится ли. Умельцы пишут свои аналоги, т.е. реализуют первый вариант из рассмотренных нами выше и предоставляют нам возможность использовать его, как третий вариант. Ведь мы вовсе не обязаны ограничиваться стандартной Support Library от гугла. Можно использовать и другие библиотеки от других разработчиков. Самая популярная реализация ActionBar – это ActionBarSherlock.
Разобрались с тем, что такое Support Library и зачем она нужна. Теперь посмотрим, как ее использовать. Работать будем с v4.
Если у вас библиотека загружена, а версия ADT одна из последних, то Eclipse сам автоматически добавит в проект эту библиотеку. И вы сразу после создания нового проекта сможете ее использовать.
Если не все так радужно, то надо скачать и добавить самим. Несложный и недолгий процесс. На официальном сайте есть инструкция. И я здесь просто напишу перевод этой инструкции со своими дополнениями. Но не спешите все это проделывать! Возможно, вам это не понадобится.
Чтобы загрузить библиотеку:
Откройте SDK Manager, найдите там Android Support Library и установите ее
Библиотека v4 загрузится в папку: /extras/android/support/v4/android-support-v4.jar
Чтобы добавить библиотеку в ваш проект:
В проекте создайте папку libs. Он должна быть в корне, на том же уровне, что и res, bin и прочие. Поместите в папку libs загруженную библиотеку android-support-v4.jar. Далее, правой кнопкой на этой библиотеке в папке libs, и в контекстном меню Build Path > Add to Build Path.
Обновите манифест, указав в нем, что минимальная требуемая версия для вашего приложения – API Level 4.
При создании нового проекта проверьте — если папка libs с библиотекой в проекте есть, то выше приведенная инструкция вам не нужна.
Из рассмотренных нами в прошлых уроках классов, библиотека содержит Fragment, FragmentManager, FragmentTransaction, ListFragment, DialogFragment.
Полный список объектов можно посмотреть, открыв API на сайте. Вот основной пакет — android.support.v4.app. Слева видны остальные.
Напишем простейший пример использования фрагмента в приложении для API Level 10.
Project name: P1141_SupportLibrary
Build Target: Android 2.3.3 (не 4.1 . )
Application name: SupportLibrary
Package name: ru.startandroid.develop.p1141supportlibrary
Create Activity: MainActivity
Сначала layout fragment.xml:
Пустой красный LinearLayout.
Далее создаем класс — MyFragment. Если мы сделаем это по старинке, наследуя android.app.Fragment, то в созданном классе получим ошибку The import android.app.Fragment cannot be resolved. И это логично, т.к. в Android 2.3.3 (API Level 10) нет такого класса.
И, собственно, именно тут и пригодится нам библиотека v4. Будем наследовать ее класс android.support.v4.app.Fragment при создании фрагмента
Только FrameLayout, который будет контейнером для фрагмента.
Далее есть один нюанс. Чтобы в старой версии Android использовать фрагменты из Support Library, нам необходимо использовать не стандартное Activity, а также из библиотеки – android.support.v4.app.FragmentActivity.
В коде видим еще одно отличие. FragmentActivity использует метод getSupportFragmentManager (а не getFragmentManager) для получения FragmentManager. В остальном, работа с фрагментами не будет отличаться от прошлых уроков. Различие будет только в секции import. Если раньше было, например так:
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
(это работает только на новых версиях)
то с использованием v4 будет так:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
(это будет работать и на старых и на новых версиях)
Цель проста — работоспособность вашего приложения на старых версиях, которые ничего не знают про фрагменты. Старые версии будут использовать для работы с фрагментами классы библиотеки v4. Но, разумеется, этот код без проблем сработает и на последних версиях Android.
Все сохраняем, запускаем приложение и видим работающий фрагмент на Android версии 2.3.3
Ради интереса запустим его же на Android 4.1
Итого, благодаря библиотеке, один и тот же код работает на старых и новых версиях и использует возможности новых версий.
На следующем уроке:
— учитываем ориентацию и размер экрана в работе приложения
Присоединяйтесь к нам в Telegram:
— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование
— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме
Источник
13 сентября 2016 г. Как создать собственную библиотеку для Android на примере BottomTabLayout
Рано или поздно у всех разработчиков накапливается достаточное количество готовых решений и хочется поделиться ими с друзьями, сотрудниками или со всем миром. Но к сожалению у большинства «руки не доходят», так как нужно оформить решение как отдельную библиотеку и потом разобраться как залить ее на открытый репозиторий. К тому же бытует мнение что это не так просто. Так вот, в этой статье мы разрушим этот миф, так как с приходом Gradle в стек технологий Android все стало намного проще.
Использование BottomTabLayout
Понятно, что первый шаг — написание собственной библиотеки. В этом примере я использую библиотеку BottomTabLayout. Эта библиотека позволяет в несколько строчек добавить нижний TabLayout, который перекочевал к нам в Android из мира iOS.
1. Набор табов задается через xml-файл ресурсов menu. Например:
2. В коде выше свойство icon — это ресурс selector , который мы создаем в drawable :
Состояния state_selected и default здесь обязательные, так как нам нужно выделять выбранный таб.
3. Создаем selector для текста:
4. Создаем стиль текста:
5. Добавляем BottomTabLayout на разметку activity :
6. Настраиваем в классе activity :
7. В нашем примере при переключении таба меняется фрагмент в контейнере:
Вот такая вот простенькая библиотека. На GitHub можно подробней ознакомится с BottomTabLayout.
Публикация Android-библиотеки
Теперь я расскажу вам, как имея похожие наработки, поделиться ими с миром.
Создание модуля в Android Studio
1. Для начала создаем проект в Android Studio. Для удобства модуль app переименовываем в sample. Здесь будет лежать пример использования нашей библиотеки.
2. Создаем новый модуль:
3. Тип модуля выбираем Android Library:
4. Это и будет наша библиотека, поэтому название соответствующее — bottomtablayout.
5. Теперь settings.gradle у нас должен выглядеть так:
6. В модуле sample, в build.gradle добавляем зависимость:
Это делается временно, пока наша библиотека существует только локально.
7. Теперь мы можем написать нашу библиотеку (или перенести готовый код) и протестировать ее в модуле sample.
8. Когда библиотека готова, заливаем ее на свой GitHub-аккаунт.
9. Пишем туториал в README.md.
Добавление библиотеки на Bintray
1. Если библиотека готова и вы считаете что пора миру ее увидеть, заходим и регистрируемся на сайте Bintray.
2. В файл build.gradle проекта добавляем зависимость:
3. В build.gradle-файле модуля библиотеки (в нашем случае это bottomtablayout) применяем плагин:
И в этом же файле:
- groupId — пакет (может отличаться от пекейджа самого модуля). Рекомендую называть groupId так: com.github. , поскольку если вы когда-то захотите залить свою библиотеку на Maven Central нужно быть владельцем домена который фигурирует в названии groupId .
- artifactId — название модуля.
- publishVersion — версия публикации.
- desc — описание библиотеки.
- licences — лицензия.
- uploadName — название библиотеки.
- website — ссылка на GitHub проекта.
4. Далее нам нужен API Key вашего аккаунта на Bintray. Заходим на страницу вашего профайла:
5. Ищем кнопочку Edit и переходим по ней:
6. Теперь переходим по пункту меню API Key:
7. Сохраняем ключ в надежном месте.
8. Открываем терминал в Android Studio и выполняем:
9. Дожидаемся сборки и отгрузки библиотеки на сервер.
10. Теперь открываем сайт Bintray и ищем переход на страницу свежедобавленной библиотеки.
11. Пока что для того, чтобы подключить нашу библиотеку нужно добавить ссылку на репозиторий в build.gradle-файл проекта:
Какой-то лишний шаг получается, правда? Значить нужно это исправить 🙂
Добавление Android-библиотеки в jCenter
С недавних пор, репозиторием по умолчанию в Android считается jCenter (до этого был Maven Central). Благо, что добавление библиотеки в jCenter делается в один клик.
1. На странице нашей библиотеки переходим по ссылке add to jCenter и отправляем запрос на добавление. В течении суток библиотека будет добавлена в jCenter и вас оповестят соответствующим письмом на почту.
2. Теперь есть возможность подключить библиотеку через build.gradle модуля, добавив зависимость в dependencies:
Завершение
Поздравляю! Ваша библиотека вышла в свет и уже можно начинать хвастаться ею перед друзьями, пиарить в пабликах и смотреть, как страница библиотеки на гитхабе набирает звездочки и форки.
UPD: читайте о наших Android-библиотеках в новой статье!
Нужен MVP, разработка под iOS, Android или прототип приложения? Ознакомьтесь с нашим портфолио и сделайте заказ уже сегодня!
Источник
10 библиотек, о которых должен знать каждый Android-разработчик
В 2015 году мы уже публиковали статью о пяти лучших библиотеках, которые мы использовали в то время. Однако платформа Android значительно выросла с тех пор. Как вы знаете, в такой быстро развивающейся области, как разработка программного обеспечения, всё меняется и развивается с молниеносной скоростью. Именно поэтому мы решили, что пришло время обновить список наиболее эффективных Android-библиотек.
Давайте без долгих предисловий перейдем прямо к нашему списку. Сначала мы рассмотрим одну из самых старых, но, по моему убеждению, и одну из самых эффективных Android-библиотек.
1. Retrofit
Retrofit — это типобезопасный HTTP-клиент, позволяющий представить ваш REST API в виде интерфейса. Вы сможете управлять телами, заголовками, параметрами API-запросов и многим другим с помощью аннотаций, что сделает этот процесс простым и понятным. Retrofit также позволяет выполнять синхронные и асинхронные вызовы API.
Ко всему прочему, Retrofit предоставляет отдельный Rx-модуль. Если вы используете Rx, этот модуль вернёт Observable при обращении к API, что позволит связать его с остальной частью вашего приложения. И это лишь некоторые из множества причин, по которым мы по-прежнему любим и используем Retrofit.
2. Moshi
Moshi — это библиотека для конвертации JSON в Java и Kotlin-объекты. Многие воспринимают Moshi как GSON 3.0. Однако эта библиотека превосходит GSON в нескольких аспектах: она быстрее, она поддерживает Kotlin, она обновляется, генерирует предсказуемые исключения и не использует испорченный адаптер DateTime по умолчанию. Кроме того, используя Moshi, процесс конвертации JSON в Java-объекты (и наоборот) становится максимально простым и понятым.
Мы также любим Moshi за поддержку JSON API. JSON API — это спецификация построения API, и многие API, с которыми мы работаем, написаны с использованием этой спецификации. Moshi JSON API облегчает нашу жизнь, поскольку JSON API ответ преобразуется в значимые Java-объекты. Retrofit ещё поддерживает Moshi, и вместе они просто отлично работают.
3. Chuck
Chuck — это HTTP-инспектор для Android, позволяющий «покопаться» в HTTP-истории вашего приложения на мобильном телефоне. HTTP-лог отображается в виде уведомления, которое можно развернуть, чтобы зайти в Chuck и посмотреть детальную информацию. Использование Chuck невероятно обрадует специалистов QA-отдела, поскольку они смогут увидеть, где находится проблема: на стороне Android или на стороне сервера. Эта библиотека иногда может помочь вам больше, чем logcat. Это связано с тем, что ваша HTTP-история сохранится даже в случае непредвиденного закрытия приложения, в то время как logcat время от времени самоочищается после перезапуска.
4. Glide
Вы скорее всего знаете, что загрузка изображений в Android вызывает большие трудности. Даже изменение размера изображения может обернуться катастрофой с OutOfMemoryException . Glide — это библиотека загрузки изображений, которая предоставляет качественный API, позволяющий изменять изображение как вам угодно.
Библиотека позволит вам легко загрузить удалённое изображение в ImageView, определить стабовые изображения, кэшировать и масштабировать изображения и т.д. Просто попробуйте проделать всё это без помощи Glide, и вы сразу поймёте, почему он находится в нашем списке ключевых библиотек. Glide даже поддерживает некоторые распространённые изменения по умолчанию, например, создание изображения круглой формы.
5. ThreeTen
ThreeTen — это библиотека для работы с датой и временем в Android. Это портированная версия JSR-310, который был включен в Java 8 в качестве стандартного пакета java.time.* . Мы любим эту библиотеку, потому что стандартный Android Calendar API превращает работу в сущий кошмар.
ThreeTen сильно уступает JodaTime с точки зрения количества методов и бинарного размера. API данной библиотеки также меньше, чем API JodaTime. Если вы уже используете JodaTime, то, вероятно, вам не стоит переходить на ThreeTen. Тем не менее, я настоятельно рекомендую попробовать ThreeTen, если вы только начинаете работать над новым проектом.
6. Timber
Timber — мощная, но простая библиотека логирования, построенная на базе Android-класса Log . С её помощью вы сможете легко включать и выключать отображение логов. Также библиотека предлагает отличную поддержку логирования форматированных строк и исключений. Благодаря этим преимуществам Timber и входит в наш список ключевых библиотек, которые мы используем практически на всех Android проектах.
7. Room
Room — это официальный ORM для Android, и этот статус оправдывается рядом причин. Эта библиотека отличается удобным API, похожим на Retrofit. Room также в значительной степени опирается на аннотации и стандартный SQL-синтаксис.
Кроме того, Room по умолчанию включает в себя поддержку Rx и LiveData , поэтому вы сможете использовать его, как вам захочется. Основное преимущество Room перед различными ORM — простота. Многие ORM имеют гораздо более сложный API, для использования которого вам потребуется тщательно изучить всю документацию. Благодаря стандартному SQL-синтаксису Room предельно доступен для понимания, что позволяет приступить к работе сразу, не тратя много времени на чтение документации.
8. RxJava
RxJava — это Java-реализация ReactiveX API, которая позволяет связывать асинхронные задачи и события в наблюдаемые (англ. observable) последовательности. Пользователи рассчитывают на то, что современные приложения способны отображать данные в режиме реального времени. Другими словами, они хотят, чтобы информация обновлялась автоматически. Именно в этом аспекте вам и пригодится RxJava.
При получении данных в реальном времени становится чрезвычайно сложно объединить несколько запросов API, переключать потоки и обрабатывать ошибки. Именно здесь RxJava отменно проявляет себя, и именно по этой причине мы начали пользоваться этой библиотекой. Я согласен, что RxJava может показаться запутанной и трудной для изучения, но эта библиотека однозначно заслуживает вашего времени. Даже после перехода на Kotlin, мы продолжили использовать RxJava из-за её преимуществ. В сочетании с Kotlin API она становится ещё лучше благодаря дополнительным функциям-расширениям.
Попробуйте сделать что-то похожее на приведённый выше фрагмент с помощью простой Java. Ну же.
9. Android KTX
Android KTX — это набор расширений-обёрток для Android API в Kotlin, которые делают его более дружелюбным. Главная цель этой библиотеки — сделать Android API более удобным в использовании. Она содержит множество методов и отличных новых функций Kotlin, таких как именованные параметры, лямбда-функции и параметры по умолчанию.
Android KTX отличается наличием множества функций-расширений, и единственный способ узнать о них — погрузиться в код библиотеки, чтобы увидеть, каким образом функции улучшили Android API. Android KTX упрощает способ использования Android API, и по этой причине эта библиотека должна стать основой каждого Android приложения, написанного на Kotlin.
10. Dagger
Наш список 10 лучших библиотек был бы неполным без Dagger. Эта библиотека представляет собой полностью статичный фреймворк внедрения зависимостей во время компиляции. Dagger, так же как и RxJava, действительно сложен для понимания (мне пришлось потратить некоторое время, чтобы понять их пример CoffeeMaker), но определённо заслуживает потраченного времени и усилий.
Внедрение зависимостей (англ. dependency injection) — это способ, позволяющий добавлять небольшие компоненты к другим моделям с минимальными усилиями. Например, если у вас есть модель автомобиля, вы можете добавить к ней шины и с лёгкостью подменить имплементацию шин в будущем — не изменив при этом ни единой строчки кода в моделе автомобиля.
При разработке более сложных приложений вы точно не захотите самостоятельно выполнять задачи по внедрению зависимостей, потому что объём кода быстро увеличивается и становится слишком сложным для поддержки. Dagger избавит вас от этой проблемы, потому что он создает граф внедрения зависимостей во время компиляции посредством обработки аннотаций.
В прошлом году Google добавил отдельный модуль Android Dagger, который позволяет писать меньше шаблонного кода и упрощает внедрение зависимостей.
Заключение
Итак, вот и он: наш список 10 лучших Android-библиотек в 2018 году. Десять отличных библиотек, которые сделают процесс Android-разработки более приятным для каждого, кто решит их использовать. Хотите больше библиотек? Так вышло, что мы в нашей компании разработали несколько собственных Android-библиотек. Можете ознакомиться с ними:
- MjolnirRecyclerView — добавляет в RecyclerView поддержку header, footer, пустых view-компонентов и DiffUtils;
- Goldfinger — упрощает реализацию аутентификации по отпечаткам пальцев;
- DBInspector — просматривает и обеспечивает доступ к базам данных приложения;
- Complexify — простой способ проверить качество пароля пользователя;
- Prince of Versions — обрабатывает обновления приложения внутри приложения.
Источник