Язык для разработки под android. На чём пишут приложения для Android

Операционная система Android с каждым годом становится не только годной ОС для обычных пользователей, но и мощной платформой для разработчиков. Что ж поделать: Google всегда идёт навстречу девелоперам, предоставляя широкие возможности и мощный инструментарий, приправленный информативной документацией.
К тому же не стоит выпускать из внимания тот факт, что «зелёный робот» является лидером по популярности среди мобильных операционных систем. Это говорит о том, что, программируя под Android, вы будете иметь широкую аудиторию, которая впоследствии может принести прибыль. В общем, Android - своеобразный «оазис» для разработчиков. Поэтому мы подготовили для вас специальную подборку языков программирования, а также сред разработки для этой ОС.
Внимание, небольшое наставление новичкам
: программирование на Android может поначалу показаться сложным или слишком монотонным. Совет: предварительно рассмотрите ссылки на полезные документации прежде чем браться за дело, и тогда программирование на Android не станет для вас проблемой.

Java - основное средство для Android-разработчика

Среды разработки : Android Studio (IntelliJ IDEA) , Eclipse + плагин ADT
Подойдёт для широкого спектра задач
Java - основной язык для программистов под Android, обязательный маст-хев для новичков. Основной исходный код Android написан именно на этом языке, так что легко понять, почему большинство выбирают именно этот язык. Приложения, написанные на Java, запускаются в Android с помощью виртуальной машины ART (или Dalvik в Jelly Bean и более ранних версиях Android) - аналога виртуальной машины Java, из-за которой у Google присутствуют серьёзные судебные тяжбы с Oracle.


Google на данный момент официально поддерживает достаточно мощную среду разработки Android Studio, которая собрана на основе Intellij IDEA от JetBrains. Также не стоит забывать про очень подробную документацию от Google, в которой разбирается всё: от match_parent и wrap_content до конструкторов, констант и основных методов класса JavaHttpConnection - обязательно стоит почитать.

Кроме того, не стоит забывать о Eclipse - очень популярной среде для Java-программистов. С официальным плагином ADT от Google этот тулкит станет мощным и легковесным оружием в ваших руках. Но ребята из Маунтин-Вью ещё с лета прошлого года перестали поддерживать Eclipse, уступив место свежей Android Studio. Рекомендуется использовать на слабых ПК.

Необходимая документация:

С++ - мощный инструмент в руках мастера

Основные среды разработки : Android Studio (версия 1.3 и выше), Visual Studio 2015 , QtCreator
Подойдёт для игровых движков и ресурсоёмких приложений.
С++ - немолодой, но очень мощный язык программирования, отметивший в прошлом году своё тридцатилетие. Был изобретён в 1985 году благодаря стараниям товарища Бьёрна Страуструпа и до сих пор занимает верхние позиции самых популярных языков программирования. «Плюсы» предоставляют вам полную свободу действия, ограничивая вас лишь рамками разумного.




За всё существование Android было создано немало фреймворков и средств разработки для C++. Особенно хочется выделить широко известный Qt и IDE QtCreator, позволяющие разрабатывать кроссплатформенные приложения для Windows, Windows Phone, Windows RT, iOS, SailfishOS и Android (когда-то в этот список входил ещё и Symbian). Кроме того, вы получаете удобную библиотеку контейнеров, алгоритмов и шаблонов Tulip, впитавшую в себя всё лучшее из Java и Android. Ну и, наконец, вы получаете множество различных QT-модулей для высоко- и низкоуровневой работы с системой. Ваш покорный слуга кодит именно в связке C++ и Qt.

В прошлом году на конференции Windows: The Next Champter было уделено широкое внимание достаточно популярной среде разработки Visual Studio 2015. Одним из главных нововведений стала поддержка разработки приложений как под Windows Phone, так и под Android - Microsoft пыталась хоть как-то увеличить количество приложений для своей ОС.

Нельзя также не упомянуть о том, что официальный Android Studio стал поддерживать NDK. С помощью NDK вы сможете использовать при работе с Android графику OpenGL. Если вам нужна быстрота и эффективность - выбирайте NDK! Этот способ разработки отлично подойдёт для игровых движков, требующих большой производительности.

Android разработка на C или C++ может показаться более простой чем на Java, но, несмотря на то, что язык предлагает вам полную свободу производимых действий и не ограничивает вас в ваших шагах, он имеет некоторые специфические особенности, на изучение которых уйдёт немало времени - недаром C++ сравнивают с нунчаками (превосходным оружием, которое, к сожалению требует огромного мастерства). Тем не менее разработка приложений под Android на C и C++ может оказаться занятным делом.

Необходимая документация:

Другие языки

Теперь самое время рассказать о других менее популярных, но тоже интересных языках и фреймворках для них. Однако по многим причинам вы не сможете добиться такого успеха как с Java и C++.

Corona (LUA Script)


Подойдёт для создания игр и простых приложений
Если вам по каким-то причинам не хочется изучать Java или разбираться в построении интерфейса через XML, то вы можете выбрать для себя данное IDE. Corona - это достаточно легковесная среда разработки, код в которой необходимо писать на достаточно лёгком LUA (любители Pascal оценят по достоинству).

Данный тулкит поможет вам при написании простых 2D-игр, для коих здесь присутствуют библиотеки для 2D=объектов, звуков, сети и игрового движка. Созданные игры работают с OpenGL, что означает высокую эффективность. Отлично подходит для новичков, возможно, именно на нём вы сможете создать своё первое мобильное приложение на Android!


Необходимая документация:

Adobe PhoneGap (HTML5, JavaScript, CSS)


Подойдёт для создания нересурсоёмких приложений
Если вы уже знакомы с HTML, CSS и JavaScript, в качестве альтернативы вы можете попробовать PhoneGap. Это IDE позволит собирать полноценные приложения, разработанные на вышеупомянутых языках программирования и разметки.

На самом деле готовые приложения из PhoneGap представляют из себя простейшие WebView, оживлённые при помощи JavaScript. При помощи разнообразных API вы сможете использовать различный функционал устройства прямо как на нативных приложениях. Что интересно - приложения компилируются на сервере и затем уже доступны для использования на iOS, Android, Windows Phone, Web OS и BlackBerry OS. С такой широкой кроссплатформенностью разработка приложений может значительно ускориться.


Необходимая документация:

Fuse (JavaScript и UX)


Подойдёт для создания как простых, так и сложных приложений
Когда люди говорят о средствах разработки под Android, они часто вспоминают Fuse. Этот инструмент - один из удобнейших в своём роде, и он может представить перед разработчиком широкий спектр возможностей и преимуществ.

Основная логика Fuse-приложений строится на JavaScript - простом и понятном языке с низким порогом вхождения. Интерфейсный же фундамент представляет UX-разметка - интуитивно понятная каждому. Ну а «плюшки» среды позволят вам применять изменения прямо во время работы приложения на вашем устройстве или эмуляторе - прямо как в Android Studio 2.0 и выше. С помощью Fuse разработка приложений для Android может оказаться несложной и приятной.

Необходимая документация:

Слова «под занавес»

Конечно мы вам показали далеко не все существующие на данный момент инструменты разработки. Этой статьёй мы вам хотели объяснить, что стать Android-разработчиком не так уж и сложно, хотя это зачастую требует стараний и упорства. Мир разработки под мобильные платформы открыт для вас, но помните: первый шаг всегда за вами.

Программирование является одним из тех направлений, где каждый может почувствовать себя в роли творца. Обычно под ним понимают разработку приложений под персональные компьютеры, единицы производственной техники или просто для электронных самоделок. Но с распространением сенсорных мобильных устройств всё популярней становится программирование под Android, iOS или другую системную оболочку подобного типа. Что ж, надо признать, занятие это перспективное. Поэтому в рамках статьи будет рассмотрено, под Android с нуля. Какие особенности здесь существуют? Какой язык используется?

Создание программ

Прежде чем самостоятельно писать программы, необходимо изучить все нужные для этого составляющие:

  1. Язык.
  2. Выбрать среду разработки. На языке мы ещё остановимся детально, как, впрочем, и на программных продуктах, где будут создаваться приложения. Но сначала немного поговорим о средах разработки. Условно их можно поделить на три составляющие:
  • графические;
  • обычные;
  • онлайн.

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

На каком языке пишутся программы?

Для этих целей используется Java. Следует отметить, что это довольно сложный язык программирования. Но для создания своих приложений вовсе не обязательно совершенно знать его. Достаточно будет базовых знаний и навыков работы со справочной информацией, чтобы получать ответы на свои вопросы. К тому же существуют определённые заготовки, воспользовавшись которыми, можно будет сделать некоторые шаги по созданию приложения без значительных проблем. Тогда программирование под Android превращается в одно удовольствие.

Выбираем обычную среду разработки

В качестве самых серьезных игроков рассматриваются Eclipse и Android SDK. Они обе являются бесплатными. В целом следует отметить, что эти среды разработки - серьезные конкуренты, и каждая из них обладает рядом сильных и слабых сторон. Изучать стоит каждую из них. Отдельно позволим себе только немного остановиться на одном аспекте Android SDK - эмуляторе. Он является программой, которая выдаёт себя за телефон или планшет, что работает на базе "Андроида". Эмулятор спокойно работает на обычном компьютере и на рабочем столе выглядит как стандартное мобильное устройство. Существует единственная особенность - управляется он с помощью мышки и клавиатуры, а не пальцем. В эмуляторе можно будет проверить работоспособность приложения под различные расширения экрана, а также на разных версиях мобильной операционной системы "Андроид". Поэтому, как бы это странно для вас ни звучало, но во время разработки приложений, нацеленных на Android, иметь телефон - вовсе не обязательно.

Что нужно для разработки своего приложения?

Графические среды разработки

Этот вариант подойдёт тем, кто не имеет понятия о программировании вообще, но желает получить своё приложение здесь и сейчас. Для начала следует ознакомиться с описанием и возможностями графических сред разработки. Так, некоторые могут размещать только простейшие элементы и прикреплять к ним минимальный функционал. Подобные ресурсы лучше не использовать, поскольку с их помощью будет сложно понять логику работы и создать развитой конечный продукт. Желательно делать отбор по таким параметрам:

  1. Наличие интуитивно понятного интерфейса.
  2. Использование понятной логики работы.
  3. Возможность создания элементов в графическом и кодовом режимах.
  4. Наличие документации по работе со средой разработки и форума поддержки.

Онлайн-среда разработки

Они могут предоставить довольно широкий функционал в простой точке доступа - интернете. «Онлайн-среда разработки» - вероятно, этим всё сказано. Хотя следует уточнить, что под Android всё же является нелегким делом. Так, наиболее сложно будет реализовать шутеры и похожие по сложности приложения. А вот программы с текстовым оформлением и передачей данных - это легко.

Заключение

Надеемся, вопросов по первым шагам подготовки к созданию своих программ больше нет. Если же вы решили всерьез заняться программированием, то можно воспользоваться специальной литературой. К примеру, книгой «Программирование под Android» Харди Браяна. Конечно, это не единственный хороший труд, но с чего-то же надо начинать. Вот с ознакомления с данным пособием и можно начать путь к успеху.

Некоторое время назад официальной IDE для Android был Eclipse (как стандарт де-факто для Java) с плагином ADT. Некоторое время спустя среди Java-программистов начала набирать популярность IDE от JetBrains, потом для нее появился плагин для разработки под Android, и народ начал потихоньку переходить на нее с Eclipse.

Еще чуть позже Google объявляет о том, что будет делать Android Studio на базе IDEA. И вот на подходе уже вторая версия Android Studio, и Eclipse вспоминается разве что как страшный сон:)

Android Studio — официальная среда разработки под Android. По сути, Android Studio — это известная Java IDE IntelliJ IDEA с плагинами.

На данный момент существуют следующие опции при выборе IDE для Android:

  1. Eclipse . Самая популярная какое-то время назад IDE для Java, сейчас использовать ее для разработки под Android крайне не рекомендуется .
  2. IntelliJ IDEA . Отличная IDE, хорошо подходит для Android.
  3. Android Studio . Лучшая IDE для Android . От IDEA отличается мелочами, но эти мелочи очень-очень приятны и сильно облегчают наш труд:) Именно на ней мы и остановимся.

В первую очередь, нужно убедиться, что у вас установлен JDK (Java Development Kit). Это обязательный компонент для разработки на Java, а поскольку разработка под Android ведется на Java — то и для разработки под Android тоже.

Во-вторых , поставьте галочки «show line numbers» и «show method separators»:

Первая будет отображать номера строк слева от текста, вторая — будет рисовать разделители между методами в коде.

Эти две опции невероятно важны, а особенно для новичков, и я не понимаю, почему они выключены по-умолчанию.

В-третьих , настройте автодополнение. Для этого в «Case sensitive completion» выберите «None»:

Поясню, почему именно так. Опция по-умолчанию подразумевает срабатывание автодополнения только в том случае, если первая буква набрана в правильном регистре. Опция None будет вызывать автодополнение независимо от того, в каком регистре вы начали набирать код.

Стандартное значение этой опции, как и прошлых двух, вызывает у меня недоумение.

Создание первого проекта

Что ж, с настройкой и установкой Android Studio мы разобрались, пришло время создать наш первый проект.

В главном окне Android Studio нажмите на «Start a new Android Studio project «:

Появится новое окно, в котором нам нужно выполнить несколько действий.

В первом нужно задать имя приложения, домен компании (из этих двух параметров будет создано имя пакета), и расположение проекта на диске:

В Android, как и в Java, основным идентификатором приложения является имя пакета. Если вы ранее работали с Java, вы знаете, что это такое. Тем же, кто не знает, рекомендую гугл, или, например, вот .

Далее Android Studio спросит нас, какие и каких версий SDK мы хотим использовать. Пока что нам хватит «Phone and Tablet» SDK, версию API поставьте 16 вместо рекомендуемой 15-й, поскольку API 15 уже неактуально и совсем не распространено:

На следующем экране нас спросят, какие компоненты приложения мы хотим создать. Выберите «Empty Activity»:

На следующем шаге просто нажмите «Finish», ничего не меняя.

По завершению этого процесса вы увидите, наконец-то, свой первый проект:

Он уже вполне работоспособен, но чтобы его запустить, нам понадобится эмулятор Android.

Создание эмулятора Android

Для создания эмулятора Android нам понадобится Android AVD Manager (AVD = Android Virtual Device). Не беспокойтесь, ставить больше ничего не потребуется. Просто нажмите на эту кнопочку:

Потом на эту кнопочку:

А потом просто несколько раз кликните «Next» и, наконец, «Finish»

Запуск Hello World

Пришло время запустить наш первый проект, созданный в Android Studio !

Нажмите на вот эту кнопку (или Shift-F10):

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

Поставьте выделенную стрелкой галочку и нажмите «ОК». Начнется сборка проекта, запуск эмулятора, установка приложения на эмулятор, и запуск приложения.

На это уйдет некоторое время (чем мощнее ваш компьютер — тем меньше времени понадобится), поскольку эмулятор — вещь достаточно медлительная, несмотря на колоссальные улучшения в последние пару лет.

И вот, по прошествии 1-10 минут (после запуска эмулятора проекты, конечно же, будут собираться и запускаться быстрее), вы, наконец, увидите свой Hello World на экране эмулятора!

На этом все, а в следующем уроке мы рассмотрим .

Новые уроки добавляются каждый день! Чтобы ничего не пропустить, подпишитесь на нашу

При изменении новости Вы получите уведомление на E-mail и в ЛС.

Уже подписались: 2

Как научиться создавать приложения на Android? Во-первых, Вам необходимо освоить язык Java, поскольку приложения для Android пишутся именно на этом языке. Дальше у Вас есть разные пути: записаться на оффлайн-курсы, что дорого и, на мой взгляд, бесполезно, плюс очень неудобно. Так же можно обратиться к репетитору, что ещё дороже, так же не очень неудобно, но, правда, намного эффективнее. Ещё можно читать множество книг, искать информацию в Интернете. И, на мой взгляд, этот способ уже на порядок лучше предыдущих, но он занимает, к сожалению, очень много времени. В принципе, я как раз и обучался таким способом. Главная проблема, с которой я сталкивался – это устаревший код. Подавляющее большинство обучающих статей для Android написаны ещё в 2011-2012 году. И если некоторые из них ещё актуальны, то часть просто устарела так, что, в принципе, не работают. Дальше снова нужно искать более свежую информацию, причём крайне желательно знать английский язык, чтобы найти правильный вариант решения той или иной задачи. Точно такая же проблема и у книг, так как с момента написания книги и до её публикации проходит зачастую не один год, а это, пусть и не критично (как ошибочно думает большинство), но всё-таки серьёзно влияет на актуальность.

Поэтому самым лучшим способом я считаю видеообучение, опираясь на следующие факты:

  1. Лучшая усваиваемость материала. Вы видите, как автор пишет и комментирует код, запускает приложение, и Вы вместе видите результат. То есть у Вас задействованы сразу и слух, и зрение, что существенно упрощает усвоение материала по сравнению, например, с книгами.
  2. Смотреть можно в любой момент. Вы не ограничены конкретной датой и временем какого-нибудь семинара в Москве, Вы не завязаны на то, чтобы жить там, где он проводится, да ещё и ходить туда. Вы можете смотреть видеокурс, где угодно и когда угодно. Вам так же не нужен для этого постоянный Интернет, как, например, для обучения по статьям в Интернете.
  3. Высокая скорость обучения. За счёт того, что Вы получаете всё и сразу в одном месте, плюс Вы ещё и быстро всё усваиваете.
  4. Бюджетный вариант. Цена видеокурса – это пара часов занятий со средним репетитором, или несколько занятий в оффлайне, за которые Вы узнаете слишком мало. Вообще, программирование – это не то, чему стоит обучаться в аудиториях.
  5. Гораздо интереснее. Это, возможно, субъективно, но лично я и, уверен, что большинство людей предпочитает не читать, а именно смотреть. Для меня, например, видеоуроки по интересующей меня теме гораздо интереснее любого фильма. И думаю, что для многих из Вас это так же.

Курс состоит из 16-ти разделов:

  • Раздел №1. Введение.
    • Как правильно проходить курс.
    • Как установить Android Studio и, главное, как правильно его настроить.
    • Как установить эмулятор Android, чтобы Вам не пришлось постоянно загружать приложение на своё устройство.
    • После данного раздела у Вас будет полностью готовая и настроенная среда для разработки приложений на Android.
  • Раздел №2. Основы программирования на Android
    • Как пишется простейшее приложение «Hello World».
    • Какова структура проекта. Это очень важный урок, в котором Вы узнаете назначение всех файлов и папок в проекте.
    • Как запустить приложение на реальном смартфоне или планшете. Вы увидите, какие действия нужно совершить на самом телефоне, как правильно его подключить к компьютеру и как загрузить приложение на само устройство.
    • Для чего нужен файл AndroidManifest.xml и как его использовать.
    • Пройдя данный раздел, Вы сможете уже создавать свои первые приложения.
  • Раздел №3. Основы интерфейса приложений.
    • Вы узнаете, что такое файлы Layout и как их использовать.
    • Вы узнаете, как задавать размеры элементов и как их позиционировать на экране устройства.
    • Вы научитесь создавать простые пользовательские интерфейсы.
    • Вы узнаете, как обрабатывать события (например, клик по кнопке).
    • Вы научитесь создавать «многостраничные» приложения.
    • Вы научитесь работать с ресурсами.
    • Посмотрев этот раздел, Вы сможете создавать относительно сложные приложения, активно взаимодействующие с пользователем.
  • Раздел №4. Менеджеры компоновки.
    • Вы научитесь работать с самыми разными менеджерами компоновки: LinearLayout, TableLayout, FrameLayout, RelativeLayout, ConstraintLayout, ScrollView, GridLayout.
    • Вы узнаете, как программно создавать и использовать менеджеры компоновки.
    • Вы научитесь совмещать различные менеджеры компоновки вместе.
    • После данного раздела Вы сможете создавать интерфейсы любой сложности.
  • Раздел №5. Компоненты.
    • Вы научитесь использовать самые разные компоненты: текстовые метки, текстовые поля, кнопки, чекбоксы, радио-кнопки, выпадающие списки, компоненты для выбора даты и времени, ползунки, всплывающие сообщения.
    • Вы узнаете, как создаются и как используются списки в приложении.
    • После данного раздела Вы сможете использовать самые разные компоненты в своих приложениях. Начиная с этого момента, Вы уже в состоянии создавать сложные проекты, так как Вы будете знать: как создаётся интерфейс, как происходит взаимодействие с пользователем и как выводится информация на экран.
  • Раздел №6. Меню.
    • Как создавать меню, подменю, чекбосы и радио-кнопки в меню.
    • Как обрабатываются нажатия по различным видам пунктов меню.
    • После данного раздела Вы сможете в своих приложениях создавать и использовать самые разные виды меню.
  • Раздел №7. Диалоговые окна.
    • Какие базовые диалоговые окна уже встроены в Android и как их использовать.
    • Как создаются свои диалоговые окна.
    • Как обрабатывать действия пользователя с диалоговым окном.
    • Изучив этот раздел, Вы сможете использовать в своих приложениях самые различные диалоговые окна.
  • Раздел №8. Дизайн приложения.
    • Что такое стили и как их использовать.
    • Что такое темы и почему они так важны и удобны.
    • Данный раздел поможет Вам создавать различные дизайнерские версии приложения и менять дизайн всего приложения буквально одним кликом.
  • Раздел №9. Работа с Activity и Service.
    • Какие есть методы обратных вызовов у Activity.
    • Что такое объект Intent и как его использовать.
    • Что такое Intent-фильтры и как их можно применять.
    • Как передавать данные из одного Activity в другой.
    • Что такое сервис.
    • Как создать сервис.
    • Как выводить уведомления.
    • Данный раздел действительно важный, и после него Вы сможете создавать по-настоящему сложные функциональные приложения: с фоновыми процессами, с множеством Activity, которые обмениваются данными между собой.
  • Раздел №10. Фрагменты.
    • Что такое фрагменты и для чего они нужны.
    • Как происходит обмен данными между фрагментами.
    • Какие есть методы обратных вызовов у фрагментов.
    • Как сделать перелистывание страниц с помощью ViewPager.
    • Пройдя этот раздел Вы сможете делать Ваши приложения более эффективными с помощью фрагментов.
  • Раздел №11. Работа с мультимедиа.
    • Как работать с изображениями.
    • Как работать с аудио.
    • Как работать с видео.
    • Что такое SoundPool и как его использовать.
    • Пройдя данный раздел Вы сможете использовать в своих приложениях мультимедиа.
  • Раздел №12. Хранение данных.
    • Записывать информацию в файл.
    • Считывать информацию из файла.
    • Сохранять и загружать настройки приложения.
    • После данного раздела Вы сможете работать с файлами в Android, а также научитесь сохранять различные пользовательские настройки и служебную информацию даже при выходе пользователем из приложения.
  • Раздел №13. Телефонные вызовы и SMS.
    • Как совершать звонок прямо из Вашего приложения.
    • Как отправить SMS из Вашего приложения.
    • Как перехватить входящее SMS.
    • Как получить доступ к SMS устройства и прочитать их.
    • Как работать с контактами в телефонной книге устройства.
    • Как правильно запрашивать разрешение на доступ к этим функциям у пользователя, так как по умолчанию они, разумеется, запрещены.
    • Просмотрев данный разделе, Вы сможете создавать приложения, взаимодействующие с телефонными функциями устройства.
  • Раздел №14. Рисование в Android.
    • Как вообще происходит рисование в Android.
    • Как рисовать и позиционировать фигуры.
    • Как рисовать сложные фигуры.
    • Что такое Matrix-преобразования и как их использовать.
    • Что такое Bitmap.
    • Что такое Drawable, как его создавать и использовать.
    • Как нарисовать свой собственный компонент (например, свою кнопку).
    • Как сделать анимацию компонентов (например, плавное появление, исxчезновение, перемещение, разворачивание и так далее).
    • Как сделать анимацию изображений.
    • После этого раздела Вы сможете создавать красивые и стильные приложения.
  • Раздел №15. Работа с Интернетом.
    • Вы узнаете, как получить данные по URL.
    • Вы узнаете, что такое JSON и как с ним работать.
    • Вы увидите пример парсинга данных о текущей погоде по гео-координатам, полученным по API стороннего сервиса, и выводе их на экран.
    • Очень важный раздел, который позволит Вам создавать приложения, взаимодействующие с API любых Интернет-сервисов.
  • Раздел №16. Многопоточное программирование в Android.
    • Вы узнаете, как создаются многопоточные приложения в Android.
    • Вы узнаете, как использовать класс AsyncTask и для чего он нужен.
    • Вы увидите, как создаётся таймер обратного отсчёта.
    • Вы узнаете, как заставить телефон вибрировать и как настроить шаблон вибрирования.
    • После данного раздела Вы сможете создавать многопоточные приложения в Android. Это очень важный раздел, поскольку обработка действий пользователя, какой-нибудь фоновый служебный поток, какой-нибудь таймер обратного отсчёта, секундомер, часы – всё это должно работать в различных потоках. И вот созданию самых разных потоков с различными целями и задачами Вы научитесь в этом разделе.


Бонусы. Курс и так получился очень объёмным, но помимо самого курса вместе с ним Вы так же получите ещё и несколько бесплатных Бонусов. Весь исходный код из Бонусов, безусловно, прилагается к курсу.

  • Бонус №1. Создание виджета. Уверен, что многие из Вас знают, что такое виджет. Но для тех, кто не знает, кратко поясню, что виджет – это небольшая программа, которая находится на рабочем столе устройства. Там может быть, например, баланс Вашего банковского счёта, сведения о погоде, список дел на сегодня и тому подобное. И в данном Бонусе, состоящем из 5-ти уроков, Вы научитесь:
    • Создавать виджет.
    • Принимать настройки от пользователя.
    • Обрабатывать нажатия на виджете.
    • Обновлять информацию в виджете.
    • Создавать полноценные виджеты с нуля на примере виджета погоды.
  • Бонус №2. OpenGL и 3D-рисование. Очень сложный материал, но крайне полезный для тех, кто планирует создавать графические приложения, например, игры. Этот Бонус состоит из 11 уроков, в которых:
    • Вы познакомитесь с OpenGL.
    • Вы узнаете, что такое шейдеры.
    • Вы узнаете, как рисуются фигуры на OpenGL.
    • Вы узнаете, как работать с цветом в OpenGL.
    • Вы узнаете, как создаются 3D изображения.
    • Вы узнаете, как убрать искажения при разных ориентациях экрана.
    • Вы узнаете, как работать с камерой.
    • Вы узнаете, как сделать анимацию камеры.
    • Вы узнаете, как применяются трансформации.
    • Вы узнаете, как текстурировать объект.
    • Вы увидите пример создания текстурированного 3D-объекта с вращающейся камерой.
  • Бонус №3. Создание приложения Vision. Данное приложение написал я когда-то для себя, но считаю, что оно будет полезным для всех, кто много работает за компьютером и при этом хочет сохранить своё зрение. Суть его в том, чтобы через равные промежутки времени делать перерывы. Например, 50 минут за компьютером и 10 минут перерыв. После каждого интервала телефон должен сигнализировать о том, что пора за компьютер или пора делать перерыв. Разумеется, в функциях этого приложения данное время должно настраиваться. Так же в этом приложении должно быть реализовано множество мелких нюансов: сброс таймера, диалоговые окна, работа таймера при закрытии приложения и многое другое. Так вот это приложение, которое я сам лично использую и советую его использовать и Вам, в этом Бонусе мы с Вами создадим. Сам Бонус состоит из 10 уроков, в которых Вы увидите:
    • Как создаётся главный экран.
    • Как создаётся экран с настройками.
    • Как добавляется поддержка альбомной ориентации.
    • Как происходит обработка и сохранение настроек.
    • Как делаются часы.
    • Как создаётся таймер обратного отсчёта.
    • Как выводится и обрабатывается диалоговое окно.
    • Как добавляется виброзвонок и аудио-сигнал.
    • Как делается кнопка смены режима работы таймера.
    • Как делается кнопка сброса таймера.

В любом деле самое сложное - это начало. Часто бывает тяжело войти в контекст, с чем столкнулся и я, решив разработать свое первое Android-приложение. Настоящая статья для тех, кто хочет начать, но не знает с чего.

Статья затронет весь цикл разработки приложения. Вместе мы напишем простенькую игру “Крестики-Нолики” с одним экраном (в ОС Android это называется Activity).

Отсутствие опыта разработки на языке Java не должно стать препятствием в освоении Android. Так, в примерах не будут использоваться специфичные для Java конструкции (или они будет минимизированы на столько, на сколько это возможно). Если Вы пишете, например, на PHP и знакомы с основополагающими принципами в разработке ПО, эта статья будет вам наиболее полезна. В свою очередь так как, я не являюсь экспертом по разработке на Java, можно предположить, что исходный код не претендует на лейбл “лучшие практики разработки на Java”.

Установка необходимых программ и утилит

Перечислю необходимые инструменты. Их 3:

  1. IDE c поддержкой разработки для Android:
    • Eclipse + ADT plugin;
    • IntelliJ IDEA Community Edition;
    • Netbeans + nbandroid plugin;

Утилиты устанавливаются в определенном выше порядке. Ставить все перечисленные IDE смысла нет (разве только если Вы испытываете затруднения с выбором подходящей). Я использую IntelliJ IDEA Community Edition, одну из самых развитых на данный момент IDE для Java.

Запуск виртуального устройства

Запустив AVD Manager и установив дополнительные пакеты (SDK различных версий), можно приступить к созданию виртуального устройства с необходимыми параметрами. Разобраться в интерфейсе не должно составить труда.

Список устройств

Создание проекта

Мне всегда не терпится приступить к работе, минимизируя подготовительные мероприятия, к которым относится создание проекта в IDE, особенно, когда проект учебный и на продакшн не претендует.

Итак, File->New Project:

По нажатию кнопки F6 проект соберется, откомпилируется и запустится на виртуальном девайсе.

Структура проекта

На предыдущем скриншоте видна структура проекта. Так как в этой статье мы преследуем сугубо практические цели, заострим внимание лишь на тех папках, которые будем использовать в процессе работы. Это следующие каталоги: gen , res и src .

В папке gen находятся файлы, которые генерируются автоматически при сборке проекта. Вручную их менять нельзя.

Папка res предназначена для хранения ресурсов, таких как картинки, тексты (в том числе переводы), значения по-умолчанию, макеты (layouts).

src - это папка в которой будет происходить основная часть работы, ибо тут хранятся файлы с исходными текстами нашей программы.

Первые строки

Как только создается Activity (экран приложения), вызывается метод onCreate(). IDE заполнила его 2 строчками:
super.onCreate(savedInstanceState); setContentView(R.layout.main);
Метод setContentView (равносильно this.setContentView) устанавливает xml-макет для текущего экрана. Далее xml-макеты будем называть «layout», а экраны - «Activity». Layout в приложении будет следующий:

Для этого приложения идеально подойдет TableLayout. Id можно присвоить любому ресурсу. В данном случае, TableLayout присвоен id = main_l. При помощи метода findViewById() можно получить доступ к виду:
private TableLayout layout; // это свойство класса KrestikinolikiActivity public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (TableLayout) findViewById(R.id.main_l); buildGameField(); }

Теперь необходимо реализовать метод buildGameField(). Для этого требуется сгенерировать поле в виде матрицы. Этим будет заниматься класс Game. Сначала нужно создать класс Square для ячеек и класс Player, объекты которого будут заполнять эти ячейки.

Square.java

package com.example; public class Square { private Player player = null; public void fill(Player player) { this.player = player; } public boolean isFilled() { if (player != null) { return true; } return false; } public Player getPlayer() { return player; } }

Player.java

package com.example; public class Player { private String name; public Player(String name) { this.name = name; } public CharSequence getName() { return (CharSequence) name; } }

Все классы нашего приложения находятся в папке src.

Game.java

package com.example; public class Game { /** * поле */ private Square field; /** * Конструктор * */ public Game() { field = new Square; squareCount = 0; // заполнение поля for (int i = 0, l = field.length; i

Инициализация Game в конструкторе KrestikinolikiActivity.
public KrestikinolikiActivity() { game = new Game(); game.start(); // будет реализован позже }

Метод buildGameField() класса KrestikinolikiActivity. Он динамически добавляет строки и колонки в таблицу (игровое поле):
private Button buttons = new Button; //(....) private void buildGameField() { Square field = game.getField(); for (int i = 0, lenI = field.length; i
В строке 8 создается объект, реализующий интерфейс View.OnClickListener. Создадим вложенный класс Listener. Он будет виден только из KrestikinolikiActivity.
public class Listener implements View.OnClickListener { private int x = 0; private int y = 0; public Listener(int x, int y) { this.x = x; this.y = y; } public void onClick(View view) { Button button = (Button) view; } }
Осталось реализовать логику игры.
public class Game { /** * игроки */ private Player players; /** * поле */ private Square field; /** * начата ли игра? */ private boolean started; /** * текущий игрок */ private Player activePlayer; /** * Считает колличество заполненных ячеек */ private int filled; /** * Всего ячеек */ private int squareCount; /** * Конструктор * */ public Game() { field = new Square; squareCount = 0; // заполнение поля for (int i = 0, l = field.length; i

Определение победителя

К. О. подсказывает, что в крестики-нолики выирывает тот, кто выстроет X или O в линию длиной, равной длине поля по-вертикали, или по-горизонтали, или по-диагонали. Первая мысль, которая приходит в голову - это написать методы для каждого случая. Думаю, в этом случае хорошо подойдет паттерн Chain of Responsobility. Определим интерфейс
package com.example; public interface WinnerCheckerInterface { public Player checkWinner(); }
Так как Game наделен обязанностью выявлять победителя, он реализует этот интерфейс. Настало время создать виртуальных «лайнсменов», каждый из которых будет проверять свою сторону. Все они реализует интерфейс WinnerCheckerInterface.

WinnerCheckerHorizontal.java

package com.example; public class WinnerCheckerHorizontal implements WinnerCheckerInterface { private Game game; public WinnerCheckerHorizontal(Game game) { this.game = game; } public Player checkWinner() { Square field = game.getField(); Player currPlayer; Player lastPlayer = null; for (int i = 0, len = field.length; i

WinnerCheckerVertical.java

package com.example; public class WinnerCheckerVertical implements WinnerCheckerInterface { private Game game; public WinnerCheckerVertical (Game game) { this.game = game; } public Player checkWinner() { Square field = game.getField(); Player currPlayer; Player lastPlayer = null; for (int i = 0, len = field.length; i

WinnerCheckerDiagonalLeft.java

package com.example; public class WinnerCheckerDiagonalLeft implements WinnerCheckerInterface { private Game game; public WinnerCheckerDiagonalLeft(Game game) { this.game = game; } public Player checkWinner() { Square field = game.getField(); Player currPlayer; Player lastPlayer = null; int successCounter = 1; for (int i = 0, len = field.length; i

WinnerCheckerDiagonalRight.java

package com.example; public class WinnerCheckerDiagonalRight implements WinnerCheckerInterface { private Game game; public WinnerCheckerDiagonalRight(Game game) { this.game = game; } public Player checkWinner() { Square field = game.getField(); Player currPlayer; Player lastPlayer = null; int successCounter = 1; for (int i = 0, len = field.length; i
Проинициализируем их в конструкторе Game:
//(....) /** * "Судьи" =). После каждого хода они будут проверять, * нет ли победителя */ private WinnerCheckerInterface winnerCheckers; //(....) public Game() { //(....) winnerCheckers = new WinnerCheckerInterface; winnerCheckers = new WinnerCheckerHorizontal(this); winnerCheckers = new WinnerCheckerVertical(this); winnerCheckers = new WinnerCheckerDiagonalLeft(this); winnerCheckers = new WinnerCheckerDiagonalRight(this); //(....) }
Реализация checkWinner():
public Player checkWinner() { for (WinnerCheckerInterface winChecker: winnerCheckers) { Player winner = winChecker.checkWinner(); if (winner != null) { return winner; } } return null; }
Победителя проверяем после каждого хода. Добавим кода в метод onClick() класса Listener
public void onClick(View view) { Button button = (Button) view; Game g = game; Player player = g.getCurrentActivePlayer(); if (makeTurn(x, y)) { button.setText(player.getName()); } Player winner = g.checkWinner(); if (winner != null) { gameOver(winner); } if (g.isFieldFilled()) { // в случае, если поле заполнено gameOver(); } }
Метод gameOver() реализован в 2-х вариантах:
private void gameOver(Player player) { CharSequence text = "Player \"" + player.getName() + "\" won!"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset(); refresh(); } private void gameOver() { CharSequence text = "Draw"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset(); refresh(); }
Для Java, gameOver(Player player) и gameOver() - разные методы. Воспользовавшись Builder"ом Toast.makeText, можно быстро создать и показать уведомление. refresh() обновляет состояние поля:
private void refresh() { Square field = game.getField(); for (int i = 0, len = field.length; i

Готово! Надеюсь, эта статья помогла Вам освоиться в мире разработки под OS Android. Благодарю за внимание!

Видео готового приложения