На конференции Google I/O 25 июня 2014 года был презентован Material Design - свод правил для дизайна Android-приложений [1]. Суть данного подхода заключается в том, что приложения должны работать (открываться, сворачиваться и т.п.) как “цифровая бумага”. Каждая страница приложения - это несколько слоев “цифровой бумаги”, они расположены на разных высотах, отбрасывают тени друг на друга, не имеют острых углов, могут переключаться между собой плавно и практически незаметно. Текст должен быть написан с помощью “цифровых чернил”, то есть так, как это происходит в традиционном графическом дизайне, например, в журналах и газетах [2].
Для каждого элемента пользовательского интерфейса приложений для ОС Android были разработаны и описаны правила действия в различных ситуациях. Благодаря введению данных принципов появилась шаблонность при создании пользовательских интерфейсов Android-приложений. Таким образом, в процессе разработки интерфейсов мобильных приложений разработчики вынуждены тратить большое количество времени и ресурсов на выполнение шаблонных действий.
С течением времени появилась еще одна особенность, связанная с расширением рынка мобильных устройств. Возникло множество компаний или новые подразделения маститых организаций (Samsung, Xiaomi, Lenovo и т.д.), которые создают устройства на базе Андроид ОС. Устройства или отдельные части внутренней составляющей патентуются, поэтому каждая компания вынуждена создавать уникальный товар. Разные размеры, разрешения экранов, ОЗУ, качество датчиков (камеры, GPS, NFC и т.п.) - все эти параметры могут отличаться . В связи с непрерывными изменениями требований целевой аудитории на рынке ежегодно появляются новые модели
устройств [3]. Несмотря на количество устройств и на их различия, необходимо обеспечить работу конечного мобильного приложения на максимально большом количестве устройств [4].
В связи с чем была поставлена цель - сократить трудозатраты на разработку пользовательских интерфейсов мобильных приложений для ОС Android с помощью частичной автоматизации процесса верстки экранов. Данное решение позволит устранить выполнение однотипных действий и обеспечить корректное отображение интерфейса на максимальном количестве устройств. Автоматизация верстки приведет к сокращению временных затрат на процесс написания приложения, так как благодаря автоматической генерации кода для интерфейса, полностью следующего правилам Material Design, что гарантирует корректное расположение элементов интерфейса на экране различных устройств.
Для решения поставленной задачи было решено написать плагин для среды разработки Android Studio, которая с декабря 2014 года стала единственным официальным средством разработки Android-приложений [5]. Плагин является независимо компилируемым программным модулем, подключаемым к основной программе динамически [6], что позволит расширить возможности Android Studio, не налагая ограничений на конечные приложения.
Из всего вышесказанного следует, что целью данной дипломной работы является написание плагина для автоматизации разработки пользовательских интерфейсов мобильных приложений для операционной системы Android.
Для достижения цели были поставлены следующие задачи:
1. Спроектировать архитектуру плагина, учитывая изученные курсы [7] и статистику по часто используемым элементам в разработке интерфейса [8];
2. Разработать модули плагина, отвечающие за генерацию кода;.
3. Разработать пользовательский интерфейс плагина.
В результате выполнения данной дипломной работы был разработан плагин для автоматизации разработки пользовательских интерфейсов мобильных приложений для операционной системы Android. Данный плагин может быть интегрирован в среду разработки Android Studio и использован Android-разработчиками любого уровня в качестве инструмента для создания пользовательских интерфейсов, соответствующих принципам Material Design.
Готовый результат выложен в IntelliJ IDEA Repository и доступен для скачивания по ссылке [32].
Тестирование данного программного инструмента показало, что использование разработанного плагина позволяет сократить временные затраты на разработку пользовательских интерфейсов мобильных приложений для ОС Android в 5 раз.
Дальнейшая работа над данным инструментом предполагает поддержку существующих и внесение новых виджетов, которые могут появляться при выпуске следующих версий операционной системы Android, а также реализацию сопутствующих им правил Material Design.
1. Описание понятия Material Design [Электронный ресурс]. https://ru.wikipedia.org/wiki/Material_Design
2. Статья “Material Design: на Луну и обратно” [Электронный ресурс]. - https://habrahabr.ru/company/redmadrobot/blog/252773/
3. Статья “Gartner Says Worldwide Smartphone Sales Grew 9.7 Percent in Fourth Quarter of 2015” [Электронный ресурс]. - http://www.gartner.com/newsroom/id/3215217
4. Статья “Лучшие производители смартфонов в 2015 году”
[Электронный ресурс]. -
https://buyon.ru/pages/luchshie-proisvoditeli-smartfonov-2015/
5. Информация об Android Studio [Электронный ресурс]. - https://ru.wikipedia.org/wiki/Android_Studio
6. Описание понятия плагин в Android [Электронный ресурс]. - https://ru.wikipedia.org/wiki/%D0%9F%D0%BB%D0%B0%D0%B3%D0 %В 8%D0%BD
7. Курс “Material Design for Android developers” от дизайнеров Google на Udacity [Электронный ресурс]. -
https://www.udacity.com/course/material-design-for-android-developers~u d862
8. “Learning Android Application Development” Авторы: Raimon Rafols Montane, Laurence Dawson [Электронный ресурс]. - https://books.google.ru/books?id=EAnVDQAAQBAJ&pg=PA12&lpg=P
A12#v=onepage&q&f=fal se
9. IntelliJ Plugin Repository [Электронный ресурс]. - https://plugins.jetbrains.com/idea
10. Андроид плагины в IntelliJ Plugin Repository [Электронный ресурс]. -
https://plugins.jetbrains.com/search/idea?search=android&correctionAllowe
d=false&allowRedirects=false&offset=80&max=10
11. Плагин “Android Studio Prettify” [Электронный ресурс].
https://plugins.jetbrains.com/plugin/7405-android-studio-prettify
12. Плагин “Android Layout ID Converter” [Электронный ресурс]. - https://plugins.jetbrains.com/plugin/7373-android-layout-id-converter
13. Плагин “Android Toolbox Plugin” [Электронный ресурс].
https://plugins.jetbrains.com/plugin/7200-android-toolbox-plugin
14. Плагин “Android ButterKnife Zelezny” [Электронный ресурс]. - https://plugins.jetbrains.com/plugin/7369-android-butterknife-zelezny
15. Плагин “MVP generator” [Электронный ресурс]. https://plugins.jetbrains.com/plugin/8341-mvp-generator
16. Плагин “MVPKiller” [Электронный ресурс]. - https://plugins.jetbrains.com/plugin/9566-mvpkiller
17. Плагин “Material Design Specs” [Электронный ресурс].
https://plugins.jetbrains.com/plugin/8516-material-design-specs
18. Статья “Why Learn Java?” [Электронный ресурс]. http://www.bestprogramminglanguagefor.me/why-learn-java
19. Статья "The Best Languages For Mobile App Development"
[Электронный ресурс]. -
http://www.makeuseof.com/tag/best-languages-mobile-app- development-2016/
20. Информация об шаблоне проектирования Model-View-Presenter [Электронный ресурс]. -
https://ru.wikipedia.org/wiki/Model-View-Presenter
21. Информация о бизнес-логике [Электронный ресурс]. - https://ru.wikipedia.org/wiki/%D0%91 %D0%B8%D0%B7%D0%BD%D
0%B5%D1%81-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%
ВО
22. Статья “Android:Pecypcbi” [Электронный ресурс]. - http://developer.alexanderklimov.ru/android/theory/resources.php
23. Описание понятия Styles в Android [Электронный ресурс]. - http: //developer. alexanderklimov.ru/android/theme .php
24. Статья “Android Working with Recycler View” [Электронный ресурс]. - http://www.androidhive.info/2016/01/android-working-with-recycler-view
25. Статья “Material Design. Динамический Toolbar на живом примере” [Электронный ресурс]. - https://habrahabr.ru/post/256643/
26.Обсуждение Toolbar в приложении Telegram [Электронный ресурс]. -
http://stackoverflow.com/questions/27070079/expand-collapse-lollipop-to
olbar-animation-telegram-app
27. Библиотека для расширения Cards “Card Library” [Электронный ресурс]. - https://github.com/gabrielemariotti/cardslib
28. Статья “The ultimate guide to Google Now cards” [Электронный ресурс]. -http://www.androidcentral.com/ultimate-guide-google-now-cards
29. Статья “15 лучших приложений для поздравительных открыток”
[Электронный ресурс].
http://www.tomsguide.com/us/pictures-story/447-greeting-cards-ecards-apps
-ios-android.html#s5
30.Официальная документация Google по концепции Material Design [Электронный ресурс]. - https://material.io/
31. Документация по разработке плагинов для продуктов компании Jetbrains [Электронный ресурс].
http://www.jetbrains.org/intellij/sdk/docs/
32. Ссылка на скачивание плагина по данной дипломной работе [Электронный ресурс].
https://plugins.jetbrains.com/plugin/9774-plugin-for-adaptive-android-imp
osition