Программирование для android с нуля. Создание приложения для Android с нуля (2019). Пересмотр вашей идеи

Этот урок научит вас основам того как написать приложение для Android используя среду разработки Android Studio. Устройства Андроид становятся всё более распространенными, спрос на новые приложение все время только увеличивается. Android Studio бесплатная, простая в использовании среда разработки.

Для этого урока лучше всего, если у вас есть хотя бы поверхностные знания языка Java так как это язык используемый Android. В уроке не будет слишком много кода так как я исхожу из того что вы немного знакомы с Java или готовы найти то что вы еще не знаете. Создание приложения займет 30-60 минут, зависит от того как быстро вы скачаете и установите все необходимые программы. После знакомства с этим уроком по созданию своего первого приложения для Андроид, возможно вы найдете себе новое веселое хобби или даже начнете карьеру многообещающего разработчика мобильных приложений.

Этап 1: Устанавливаем Android Studio

  1. Необходимо установить JDK (Java Development Kit ) и JRE (Java Runtime Environment). Скачать можно по этой ссылке . Выбираете там версию для вашей ОС, принимаете лицензионное соглашение, скачиваете и устанавливаете.
  2. Теперь идем сюда http://developer.android.com/sdk/index.html и скачиваем (осторожно, придется скачать около 3 гигабайт).
  3. Запускаем установку и следуем инструкциям.

Этап 2: Создаем новый проект

  1. Откройте Android Studio.
  2. В меню «Quick Start », выберите «Start a new Android Studio project ».
  3. В окне «Create New Project » (окно которое открылось), назовите ваш проект «HelloWorld ».
  4. Название компании по желанию.*
  5. Нажмите «Next ».
  6. Убедитесь, что галочка стоит только на «Phone and Tablet ».
  7. Если вы планируете тестировать своё первое приложение на вашем телефоне, то убедитесь, что выбрана правильная версия Андроид (не старше той, что на телефоне).
  8. Нажмите «Next ».
  9. Выберите «Blank Activity ».
  10. Нажмите «Next ».
  11. Оставьте все остальные поля как они есть.
  12. Нажмите «Finish ».

*Типовое название компаний для андроид проектов «example.name.here.com».

Этап 3: Редактируем приветствие

  1. Перейдите на вкладку activity _main .xml , скорее всего она уже активна.
  2. Убедитесь, что внизу экрана активна вкладка Design (скорее всего это так).
  3. Перетащите мышкой фразу «Hello , World ! » из левого верхнего угла телефона в центр экрана.
  4. В левой части экрана находится дерево папок. Откройте папку под названием «values ».
  5. В этой папке дважды щелкните на файл «strings .xml ».
  6. В этом файле найдите строчку содержащую текст «Hello world! » и добавьте к этому тексту «Welcome to my app ! ».
  7. Вернитесь на вкладку «activity _main .xml ».
  8. Убедитесь, что ваш текст находится по центру экрана телефона и содержит текст «Hello world ! Welcome to my app ! ».

Этап 4: Добавляем Кнопку

  1. На вкладке «activity _main .xml » выберите внизу вкладку «Design ».
  2. В колонке слева от окна, где находится телефон, найдите папку под названием «Widgets ». Там находятся различные кнопки.
  3. Возьмите кнопку «Button » и перетащите её на экран телефона. Она должна находиться по центру экрана прямо под вашим текстом.
  4. Убедитесь, что кнопка все еще выбрана (синяя рамка вокруг неё).
  5. В нижнем правом углу есть окошко со свойствами выбранного объекта. Промотайте вниз и найдите строчку под названием «text ».
  6. Поменяйте текст «New Button » на «Next Page ».

Этап 5: Создаём Second Activity

  1. В верхней части дерева файловой системы проекта, щелкните правой кнопкой мыши на папке под названием «app ».
  2. Выберите New > Activity > Blank Activity .
  3. В появившемся окне в верхней строчке введите «SecondActivity ».
  4. Нажмите «Finish ».
  5. Перейдите на вкладку «activity _second .xml » и убедитесь, что внизу выбрана вкладка «Design ».
  6. Переместите текст из верхнего левого угла телефона в центр экрана, как мы делали на предыдущих шагах.
  7. Убедитесь, что текстовый блок все еще выбран (синяя рамка) и в нижнем правом углу свойств объекта найдите строчку «id » и введите туда «text 2 ».
  8. В верхнем левом углу (в дереве проекта) снова выберете двойным нажатием «strings .xml ».
  9. Под строчкой Hello world! Welcome to my app!

    добавьте следующую строку

    Welcome to the second page!

  10. Вернитесь на вкладку «activity_second.xml ».
  11. Снова выберите текстовый блок.
  12. В нижнем правом углу в свойствах объекта найдите строчку «text » и введите туда «@ string /second _page ».
  13. Убедитесь что в текстовом поле теперь написано «Welcome to the second page ! » и блог располагается в центре экрана.

Этап 6: Прописываем действие для кнопки


Этап 7: Тестируем приложение

  1. На панели инструментов в верхней части окна Android Studio нажмите на зеленый символ воспроизведения.
  2. В окне «Choose Device » выберите пункт «Launch emulator » и выберете устройство.
  3. Нажмите на кнопку «OK ».
  4. Когда эмулятор запустится (это может занять длительное время) приложение автоматически откроется на виртуальном устройстве.
  5. Убедитесь что весь текст отображается правильно и нажатие на кнопку приводит вас к следующей странице.

Внимание : Если вы получаете сообщение «HAX kernel module is not installed! », то тут возможны два варианта. Дело в том, что данную виртуализацию поддерживают лишь современные процессоры Intel и вам необходимо лишь включить её в BIOS. Если же у вас процессор, который не поддерживает данную функцию, вам придется протестировать приложение на реальном телефоне или воспользоваться не встроенным, а сторонним эмулятором.

Как получить файл.apk в Android Studio

Поздравляю! Вы только что завершили написание своего первого Android-приложения с некоторыми основными функциональными возможностями. Готовое приложение должно иметь страницу приветствия пользователя и кнопку, которая приведет пользователя на вторую страницу.

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

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

Начало работы

Новичкам в программировании поможет наша .

Для новичков в Android Google сделал хорошее введение в Android на своём сайте. Также есть замечательный краудсорсинговый гид по Android . Кроме того, есть курс от Google на Udacity.

Если у вас возникают проблемы с Android , крайне рекомендуется сперва проверить StackOverflow . Он создан для ответов на технические вопросы и даже является .

Вы всегда можете найти у нас на сайте.

FAQ

Я хочу начать разрабатывать под Android. С чего мне начать?

Первый и важнейший шаг в разработке под Android – это изучение Java и XML. Как только вы более менее познакомитесь и с тем, и с другим, изучите официальную Документацию по Android и пройдите несколько уроков, пока не почувствуете себя достаточно уверенным для создания собственных проектов. Удачи!

Нужно ли мне Android-устройство для разработки?

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

Какую IDE мне лучше использовать?

  • Android Studio - официально поддерживаемая IDE для разработки под Android. Именно она используется в современных руководствах и видео, в том числе и от Google.
  • Eclipse была основной IDE для разработки под Android на протяжении многих лет, поэтому большинство устаревших уроков, ресурсов, видео и скриншотов сделаны на ней.
  • IntelliJ IDEA был альтернативой Eclipse, но в настоящее время разумнее начать с Android Studio. Android Studio – это ответвление IntelliJ IDEA, так что вы получите все её преимущества плюс бонусы под Android.

Может, мне стоит забыть про Java и начать учить Kotlin?

Google теперь официально поддерживает Kotlin как язык разработки под Android, но это не значит, что про поддержку Java можно забыть. В ближайшем обозримом будущем документация, инструменты, новые фичи платформы будут поддерживать как Kotlin, так и Java. Хотя Kotlin - более молодой язык с некоторыми приятными особенностями, вы всё ещё можете создавать отличные приложения на Java. Выбор зависит только от вас, но если вам не принципиально или вы новичок, то, возможно, лучше сделать выбор в пользу Kotlin.

Ресурсы

Здесь представлены основные ресурсы по обучению разработке под Android на английском языке. Это далеко не полный список, но достаточный для старта.

Официальные ресурсы Android

Дизайн

  • Красивости для Android – вдохновение для создания графических интерфейсов под Android.

Рассылки

  • Android Weekly – замечательная рассылка, помогающая быть в курсе последних разработок Android.

Коллекции библиотек

Инструменты

  • Genymotion – крайне полезный и функциональный эмулятор.
  • Android Asset Studio – отличная коллекция инструментов для создания/редактирования иконок, изображений и т.д.
  • Codota Plug-in для Android Studio – замечательные примеры кода прямо в Android Studio.

Примеры open source приложений

Идеи для приложений

Итак, у вас есть идея для приложения… Люди каждый день об этом пишут. Но перед тем, как просить помощи в реализации проекта, нужно ответить на следующие ключевые вопросы:

Каков мой бюджет?

Если вы настроены серьёзно и хотите выпустить свой продукт, вы должны подумать о своём бюджете. Даже в случае простого приложения нужно подумать о нескольких тысячах долларов. Хотя бы.

Какая у меня маркетинговая стратегия?

Вы собираетесь использовать обычное сарафанное радио или готовы платить за известность?

Какой список задач у данного проекта?

А также, какие есть ограничения? Сколько мне нужно разработчиков?

Откуда будут приходить/где будут храниться данные?

А также, как они будут использоваться? Разработана ли у меня соответствующая политика приватности?

Есть ли цель заработать денег?

Если да, как вы собрались её достигать? Через рекламу, IAP , подписки, платные приложения? Всё вышеперечисленное?

Как вы будете платить вашим разработчикам?

Есть ли у вас капитал или вы собрались платить им после того, как приложение начнём приносить доход? Часто независимые контрактники требуют часть полной стоимости авансом. Большинству разработчиков неинтересно разделение доходов, за исключением случаев, когда они сами вкладываются в приложение.

Какой будет способ тестирования?

На какой тип устройства вы собираетесь устанавливать его? Как много итераций вам нужно? Каких людей вы хотите вовлечь?

Как скоро вы хотите опубликовать приложение в магазине?

Это однозначно повлияет на конечный доход.

Будете ли вы требовать или предлагать регистрацию/интеграцию с социальными сетями?

Продумайте реализацию этой функциональности.

Какова ваша целевая аудитория?

Это нишевое приложение или оно может быть распространено повсюду?

Реализована ли уже моя идея?

Если да, как я могу улучшить её или что в ней отсутствует?

Что делать с идеями для приложений, если вы не разработчик?

Вы, возможно, ищете разработчиков в вашу команду для реализации приложения. Если у вас есть деньги и вы можете заплатить разработчику или фирме, то всё просто и понятно. Далее мы поговорим о том, что делать, если у вас недостаточно денег, чтобы платить кому-то.

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

  • Нарисуйте дизайн вашего приложения (внешний вид и функциональность). Он может быть грубым и нарисован на бумаге. Но он должен быть достаточно конкретным, а не размытым.
  • Составьте список своих навыков, связанных с идеей.
  • Составьте список того, что вы вложите в свою идею.

Поймите, что разработка требует значительных усилий. Представьте, что разработчик работает полный рабочий день (8 часов) на протяжении 2 месяцев, чтобы создать ваше приложение. И вы также работаете полный рабочий день. Что вы делаете в это время? Если ваша работа, по вашим представлениям, заканчивается раньше, то нужно пересмотреть идею. В этом сценарии разработчик выполняет большую часть работы, и вы, честно говоря, бесполезны. То, что вы можете дать после того, как приложение закончено, не имеет особого значения и не будет мотивировать разработчика заканчивать продукт.

Пересмотр вашей идеи

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

  • Распределяйте работу настолько справедливо, насколько это возможно.
  • Фокусируйтесь прежде всего на ваших навыках.
  • Ваша загрузка должна примерно равняться 2 месяцам полноценной работы. Для простых приложений загрузка, конечно, может быть меньше. Вы можете попросить сообщество (например,

В любом деле самое сложное - это начало. Часто бывает тяжело войти в контекст, с чем столкнулся и я, решив разработать свое первое 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. Благодарю за внимание!

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

В тексте про я уже пытался объяснить, почему Kotlin сам по себе отличный язык, а в связке с Java он ещё лучше. Действительно, официально выпущенный лишь год назад, Kotlin очень быстро завоевывает сердца разработчиков по всему миру практически полным отсутствием недостатков.

С его помощью (точнее с помощью родной среды IntelliJ IDEA) вы не будете чувствовать никаких проблем в разработке нативных приложений для Android. При этом спрос на специалистов Kotlin пока низок, а значит, получив опыт работы с ним, вы рискуете в будущем получить конкурентное преимущество.

Языки веба

Стандартный языковой набор работника веба: HTML, CSS и JavaScript. Не зная эти 3 языка, вы сведете себя к разработке приложений достаточно узкой направленности. Даже если вы непосредственно веба в будущей работе касаться не хотите, то гибридных приложений избежать получиться вряд ли.

Работать с HTML, CSS и JavaScript можно используя среды PhoneGap Build или, в более специализированном случае, Adobe Cordova . Больших знаний они от вас не потребуют, а результат обеспечат. Или вот из последнего, React Native от Facebook - это уже следующий уровень удобства взаимодействия, но опыта и документации скопилось мало. В общем, выбирайте, благо есть из чего.

Lua

Язык, который старше Java, куда менее популярный, но всё равно востребованный. У него есть ряд преимуществ, вроде динамической типизации, относительно простого синтаксиса, но до наших дней он дожил благодаря задействованности в играх. Именно удобство создания программной прослойки между движком и оболочкой открыло перед Lua двери в мир карманных гаджетов.

Corona SDK - среда для разработки мобильных кроссплатформенных приложений, преимущественно игр, где главным инструментом является Lua. С 2015 года она распространяется бесплатно, рассчитана на начинающих разработчиков, плюс ко всему вы можете найти много полезной информации, как в англоязычном, так и русскоязычном сегменте интернета.

C/C++

На самом деле Google предоставляет разработчиков две среды разработки: SDK, предназначенная для работы с Java, и NDK , где нативными языками являются C/C++. Да, конечно вы не напишете целое приложение с использованием лишь этих языков, но с их помощью вы можете создать библиотеку, которую впоследствии при помощи Java подключите к основному телу программы.

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

А на каких языках пишете вы?

При изменении новости Вы получите уведомление на 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 уроков, в которых Вы увидите:
    • Как создаётся главный экран.
    • Как создаётся экран с настройками.
    • Как добавляется поддержка альбомной ориентации.
    • Как происходит обработка и сохранение настроек.
    • Как делаются часы.
    • Как создаётся таймер обратного отсчёта.
    • Как выводится и обрабатывается диалоговое окно.
    • Как добавляется виброзвонок и аудио-сигнал.
    • Как делается кнопка смены режима работы таймера.
    • Как делается кнопка сброса таймера.
Тонкости