Строим макеты с помощью Android Anko — прощай XML?

Дата публикации:

Рано или поздно все Android разработчики сталкиваются с необходимостью создания элементов UI. Тривиальная, на первый взгляд, задача зачастую требует колоссальных усилий и стоит жизни тысячам нервных клеток.

А сейчас мы зададим провокационный вопрос. Что если XML не является единственным решением для разработки макетов? И что если существуют более эффективные и удобные решения? Какие именно — спросите вы. А вот хотя бы Android Anko. В этой статье мы поговорим о его особенностях и преимуществах.

Android Anko — что это?

Anko — это доменная библиотека для языка программирования Kotlin. Она поставляется с массой удобных функций, упрощающих разработку под Android.

Anko призван решать конкретные задачи предметной области. Библиотека основывается на  функциях расширениях и типо-безопасных билдерах.  В результате мы получаем простые и организованные процессы разработки и счастливых разработчиков, которые пишут лучший код. Ну а лучший код повышает стабильность и продуктивность приложений.

В общем, вы поняли. А теперь — к конкретике. Почему же стоит отказаться от XML в пользу Android Anko? Выделим несколько причин:

  • XML is not typesafe
  • XML is not null-safe
  • Anko позволяет вам писать фактически один и тот же код для каждой компоновки
  • XML анализируется устройством, тратя ресурсы процессора и батареи
  • XML не позволяет использовать код повторно (видимо, это самый большой недостаток).

Плюсы и минусы

А теперь давайте сравним работу с XML с работой Android Anko и проанализируем все плюсы и минусы.

UI в коде

Он намного проще. Без Anko написать описать UI элементы в коде можно следующим образом:

Переписываем этот же код с использованием Anko:

Выглядит более изящно, не так ли?

Плюсы: меньше кода, лучше читаемость.

Стандартный XML и inflate против создания layout в коде

Создав XML разметку, вы вызываете setContentView(R.layout.main), стартуя инициализацию. С Anko же вам не нужен XML и даже setContentView() (если вы используете Activity) — все это вы делаете в коде:

Плюсы — выше скорость инициализации, удобные функции настройки визуальных параметров, возможность переиспользовать готовые куски кода и элементы.

Минусы — плохая читаемость по сравнению с XML, создание разметки происходит вслепую.

Возможность просмотреть preview созданной разметки все же существует. Для этого вам потребуется Anko layouts plugin. Однако, чтобы увидеть изменения, придется каждый раз пересобирать проект.

Отделение UI компонентов от кода класса

В случае использования  XML — это UI. А классы — это логика их отображения. Используя Anko, вы можете разделить данные категории, применив AnkoComponent:

Плюсы — модульность.

Layouts and LayoutParams

При использовании XML, позиционирование виджета внутри контейнера происходит старым добрым способом:

Используя Anko,  вы можете настроить виджет таким образом:

Отметим также несколько удобных вспомогательных свойств:

  • horizontalMargin устанавливает левое и правое поля
  • verticalMargin устанавливает верхнее и нижнее поле
  • margin устанавливает все четыре поля одновременно.

Listeners

Мы можем назначить обработку касания различными способами — в коде, в XML или, например, используя Data Binding. Несомненным преимуществом Anko является возможность писать асинхронный код внутри обработчиков.

Такая возможность появляется, благодаря поддержке coroutines — экспериментальной фиче от разработчиков Kotlin.

Также благодаря Anko, можно “скрывать” callbacks из listeners. Речь идет об изменениях, которые для нас не важны. Например:

Можно поменять на:

Плюсы — сокрытие ненужных пустых методов, асинхронное выполнение.

Минусы — необходимость изучить coroutines.

Include tag

С помощью Anko вы все еще можете вставить свой XML layout в DSL.

Плюсы — это удобно.

Применение

О плюсах и минусах библиотеки Android Anko можно говорить довольно долго. Но куда лучше испытать ее на практике и сложить собственное мнение.

Итак для начала разработки на Anko, вам понадобится добавить следующие зависимости:

Так как на сегодняшний день constraint layout является наиболее предпочтительным способом организации UI элементов, приведем пример Anko с его использованием:

По сути, при построении constraint layout на Anko, нам следует помнить о трех важнейших вещах.

Обращение к свойствам происходит внутри View элемента:

Layout параметры применяются к самому элементу:

Привязка элемента происходит через connect:

Вывод

На сегодняшний день библиотека Android Anko вызывает неоднозначное отношение. Обладая несомненными преимуществами, она все же остается довольно сырым продуктом, имеющим определенные ограничения (версия на данный момент 0.10.4). Из позитивных аспектов следует выделить:

  • Низкий порог вхождения. Язык DSL интуитивно понятен.
  • Удобство контроля над UI элементами в коде — намного выше, чем при использовании стандартных средств Android.
  • Скорость инициализации UI элементов — она возрастает в разы.
  • Декомпозиция, модульность, переиспользование.

Негативные моменты:

  • Необходимость изучать новую технологию с нуля — некоторые элементы будут казаться более сложными, чем в XML.
  • Реализация UI элементов происходит вслепую. Для того чтобы видеть изменения, необходимо установить плагин, однако и с ним вам придется всякий раз пересобирать проект.
  • Некоторые свойства, доступные в XML, недоступны в коде.
  • Построение кастомных UI элементов требует глубоких знаний (а иногда и вовсе невозможно без специальных XML свойств).

Основываясь на собственном опыте, мы можем сказать, что Anko — довольно полезное и эффективное решение. Взвесив все плюсы и минусы, наша Android команда переключилась именно на эту библиотеку. А вы работали с Android Anko? Каково ваше мнение? Поделитесь им в комментариях. Если же у вас остались вопросы, пишите нам напрямую.

Мы Крым Диджитал

С 2015 года мы предоставляем полный цикл услуг мобильной и веб-разработки клиентам из различных отраслей и разных стран.

Подпишись
на наши новости

Контакты пресс-службы

+ 7 (926) 118-80-32

WhatsApp, Viber, Telegram

Давайте обсудим Ваш проект

или свяжитесь с нами по почте projects@crimeadigital.ru

Нажимая кнопку «Отправить», вы даете согласие на обработку персональных данных

Прошел день карьеры в СевГУ

Резидент технопарка, компания Крым Диджитал, приняла участие в Дне Карьеры в СевГУ, который прошел 17 мая. Мероприятие длилось 3 часа. Компанией заинтересовались  более 35 студентов, которым была важна информация о прохождении практики, бесплатные курсы Академии и вакансии, не требующие опыта работы. Руководитель разработки компании выступил с презентацией и ответил на все вопросы, которые так волнуют студентов — как начать свою карьеру в ИТ? Есть ли возможность совмещать учебу с работой? Кем я смогу стать? Как понять, кем я хочу работать? И многие другие.

Резидент технопарка, компания Крым Диджитал, приняла участие в Дне Карьеры в СевГУ, который прошел 17 мая.

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

Руководитель разработки компании выступил с презентацией и ответил на все вопросы, которые так волнуют студентов - как начать свою карьеру в ИТ?

Есть ли возможность совмещать учебу с работой?

Кем я смогу стать?

Как понять, кем я хочу работать?

И многие другие.

Завершен набор студентов на летнюю практику

Крым Диджитал завершила набор студентов на летнюю практику. В июле придут 14 человек. Это студенты второго и третьего курсов кафедр Программная инженерия, Информатика и вычислительная техника, Информационные системы и технологии и Управление в технических системах. Все ребята будут ходить в офис и будут заняты реальным проектом, который они должны реализовать до конца практики. Каждый выбрал для себя то направление, в котором хотел бы развиваться — front-end и back-end-разработка, дизайн. Руководить практикой будет Head of Engineering.
Крым Диджитал завершила набор студентов на летнюю практику. В июле придут 14 человек. Это студенты второго и третьего курсов кафедр Программная инженерия, Информатика и вычислительная техника, Информационные системы и технологии и Управление в технических системах. Все ребята будут ходить в офис и будут заняты реальным проектом, который они должны реализовать до конца практики. Каждый выбрал для себя то направление, в котором хотел бы развиваться - front-end и back-end-разработка, дизайн. Руководить практикой будет Head of Engineering.

Крым Диджитал приняла участие в стратегической сессии

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня. Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства. Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня.

Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.
Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства.

Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Выпуск курса Software Testing

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing! Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании. Следующий курс намечен на август. Не пропусти анонс записи!

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing!

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

Следующий курс намечен на август. Не пропусти анонс записи!