На чем пишут андроид приложения. Курс «Мобильный разработчик». Как правильно написать приложение для андроид

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

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

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

С каждым языком и фреймворком связаны свои сложности и нюансы, достоинства и недостатки. Рассмотрим основные языки для написания Android-приложений.

Java

Официальный язык программирования, поддерживаемый средой разработки Android Studio. По данным ежегодного опроса ресурса Stackoverflow , в 2018 году Java вошёл в пятёрку самых популярных языков программирования.

Сделать первый шаг к освоению Java — это установить Android Studio . Это тип программного обеспечения под названием IDE — Integrated Development Environment, или встроенная среда разработки. В комплекте с Android Studio идёт Android SDK — набор инструментов для разработки под Android и всё, что нужно для надёжного старта.

На Java ссылается большинство официальной документации Google, а найти платные и бесплатные библиотеки и руководства не составит труда — их великое множество.

Основными причинами использовать PhoneGap для разработки приложений в компании Live Typing были:

  • сокращение сроков и стоимости разработки приложения для нескольких платформ сразу (приложение для получения абонемента в спортивные заведения города );
  • возможность использовать уже имеющийся сайт клиента и его фрагменты (приложение для оплаты услуг и интернет-покупок ).

Заключение

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

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

Как создать приложение для Android или iPhone? — таким вопросам все чаще задаются не только веб-разработчики, но и обычные владельцы небольших бизнес-сайтов, блоггеры.

В данном обзоре предлагает рассмотреть , которые представляют собой конструкторы для быстрого и удобного создания Android и iPhone приложений . При этом не требуя от пользователя навыков программирования или других специальных ИТ-знаний. Такие приложения незаменимы для разного вида бизнеса — ведь это отличный способ расширить целевую аудиторию и привлечь клиентов.

Таким образом, все рассмотренные в обзоре для разработки приложений можно объединить под лозунгом: просто, быстро и без программирования!

бесплатный веб-сервис, который позволяет сконвертировать контент вашего сайта в Android приложение и распространить его через Google Play. Кроме того, созданные приложения можно как продавать, так и размещать в них рекламу.
Можно создать неограниченное количество Android приложений из трех типов контента: сайта, просто html-страницы и YouTube видео. Для создания Android приложения AppsGeyser использует простой и наглядный мастер шаблонов.

Сайты AppsGeyser: http://www.appsgeyser.com, http://www.appsgeyser.ru

бесплатный онлайн-сервис для быстрого создания мобильных приложений. TheAppBuilder создает приложения с помощью конструктора и типовых шаблонов — для бизнеса, событий, образования, музыки, спорта и др. Созадние приложения бесплатно, а за 5 у.е. в мес. можно отключить показ посторонней рекламы в созданном приложении. TheAppBuilder позволяет создавать Android приложение, и Windows Mobile.

Сайт TheAppBuilder: http://www.theappbuilder.com

— это онлайн-сервис, который позволяет пользователям создавать и публиковать свои собственные мобильные приложения в несколько кликов в интернете. Платформа Appsmakerstore создает мобильные приложения, поддерживаемые HTML5, iTunes, Android Market, Blackberry Marketplace, Windows Marketplace и Facebook без каких-либо глубоких технологических навыков. Это всего 1 приложение для 6 разных платформ . Appsmakerstore предлагается в 23 языках, в том числе на русском и украинском.

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

  • «Сделай сам» — $9.78 в месяц.
  • «Мы делаем приложение для Вас» — $249
  • «Reseller»- специальная цена, которую нужно узнавать на сайте отдельно.

Всегда включено во все планы:

  • Неограниченное количество изменений контента и обновлений приложения.
  • Обновление контента приложения на iTunes и Google Play без необходимости повторной публикации.
  • Отправлять неограниченное количество push уведомлений пользователям.
  • Автоматически получать и пользоваться всеми обновлениями системы.
  • Безопасный хостинг на наших серверах.
Сайт Appsmakerstore: http://appsmakerstore.com

— платный онлайн-конструктор мобильных приложений (iPad, Android , HTML5) для небольшого бизнеса. Среди возможностей - геолокация, получение и отправка сообщений, корзина для товаров, уведомления, интеграция с соцсетями, размещение информации о меню, наборе услуг, предстоящих событиях и др. Есть шаблоны для ресторанов, риелторов, гимнастических залов и др.

Данный сервис представлен такими планами:

  • «Мобильный сайт» — $29 в месяц.
  • «Мобильное приложение» — $59 в месяц
  • « White Label Partner» создание приложений для Ваших клиентов — специальная цена, которую нужно узнавать на сайте отдельно.
Сайт Biznessapps: http://www.biznessapps.com

5. AppGlobus

AppGlobus — платный, один из российских онлайн конструкторов мобильных приложений, позволяющий пользователям самостоятельно создать и опубликовать своё приложение в App Store и Google Play.

Использует новый дизайн и возможности Ionic Framework, что значительно улучшает качество разработки, и даёт возможность создавать мобильные приложения на HTML5, iOS, Android даже без навыков программирования.

На данный момент AppGlobus предлагается на 8 языках, в том числе на русском.

AppGlobus.com предлагает следующие пакеты:

  • STARTAP - 900 руб./мес.
    • Приложения: HTML5/Android, админ панель, магазин, нет ограничений на Push, нет ограничений на установки, нет рекламы.
  • BASIC - 1500 руб./мес
    • Приложения и для Android и для iOS, админ панель, магазин, нет ограничений на Push, нет ограничений на установки, нет рекламы.
  • STUDIO - 2000 руб./мес
    • Приложения: Windows/Android/ iOS, админ панель, магазин, нет ограничений на Push, нет ограничений на установки, нет рекламы.
  • PRO - 45000 руб./единоразово
    • Приложения: Windows/Android/ iOS, разработка на заказ, сами разместим в App Store и Google Play, отдадим исходный код
Сайт AppGlobus: http://appglobus.com/

— платный онлайн-сервис для создания своего мобильного приложение для бизнеса или личного пользования. Никаких специальных умений не требуется. Хорошо подходит для небольшого бизнеса, например, интернет-магазинов. Чтобы создать свое приложение, понадобится всего 5 минут – нужно всего лишь выбрать необходимые модули и дизайн. Есть английская и русская версии.

My-apps.com предлагает такие пакеты:

  • Старт — 599 руб. /мес.
    • приложения только для Android, доступ к конструктору, бесплатные шаблоны и иконки приложений, обновления контента каждые 48 часов, обновления исходника приложения в сторах самостоятельно не чаще 1 раза в 2 месяца.
  • Лайт — 990 руб. /мес
    • приложения и для и для iOS, доступ к конструктору, бесплатные шаблоны и иконки приложений, базовые скриншоты приложения, Push уведомления — 1 в месяц, обновления контента каждые 24 часа, обновления исходника приложения в сторах 1 раза в 2 месяца.
  • Стандарт — 2490 руб. /мес
    • приложения и для Android и для iOS, доступ к конструктору, бесплатные шаблоны и иконки приложений, базовые скриншоты приложения, поддержка по Skype, Push уведомления — 10 в месяц, обновления контента каждые 12 часов, обновления исходника приложения в сторах 1 раза в месяц.
  • Бизнес — 9890 руб. /мес
    • приложения и для Android и для iOS, доступ к конструктору, бесплатные шаблоны и иконки приложений, базовые скриншоты приложения, поддержка по Skype и е-мейл, персональный менеджер, Push уведомления — 50 в месяц, обновления контента -мгновенно, обновления исходника приложения в сторах — без ограничений.
  • VIP — 3999 руб. /мес + 150 000 руб. инсталляционный платеж

    • приложения и для Android и для iOS, доступ к конструктору, бесплатные шаблоны и иконки приложений, базовые скриншоты приложения, поддержка по Skype и е-мейл, персональный менеджер, Push уведомления — неограничено, обновления контента -мгновенно, обновления исходника приложения в сторах — без ограничений.
Сайт My-apps.com: http://my-apps.com

предоставляет платформу “сделай сам ” для создания iPhone/ приложений , которая так же не требует навыков программирования. Данный сервис предоставляет для каждой организации простой способ создания мобильных (iPhone, iPad, Android) приложений и публикационных материалов. Клиенты могут создать собственные каталоги, флайеры, брошюры, отчеты, резюме и пр. и предоставлять их с помощью SaaS-решения. Есть английская и русская версии.

iBuildApp предоставляется в таких пакетах:

  • Бизнес (2400 рублей в месяц) — 3000 установок, неограниченное количество просмотров мобильного сайта, отсутствие встроенной рекламы, публикация приложения на iTunes и Google Play.
Сайт iBuildApp: http://ibuildapp.com

— онлайн-сервис для разработки приложений (iPhone , iPad, Android). Позволяет создавать приложение на основе одного из множества шаблонов приложений. Элементы создаваемого пользовательского интерфейса приложения могут быть связаны с такими функциями, как отправка электронной почты, SMS-сообщения, отправка на сервисы Facebook и Twitter.

  • Developer — $33 в месяц . (можно создать только 1 приложение)
  • Professional — $79 в месяц .
  • Premiun- $129 в месяц .
  • Enterprise — Цену нужно узнавать отдельно .

Все пакеты поддерживают такие платформы: IOS (iPhone/iPad) & Android (Phone/Tablet)

Сайт Viziapps: http://www.viziapps.com

- онлайн-редактор, позволяющий создавать приложения для iOS, Android и Windows Phone. Пользоваться ей очень просто: собственную программу можно собрать из уже готовый частей. Несмотря на то что AppsBuilder старается быть более простым и понятным для неопытных пользователей, в него добавлены и некоторые возможности для программистов: к примеру, можно дополнять созданные приложения собственными Java-скриптами.

Есть три платных пакета, в которых есть везде 30 дней — бесплатная пробная версия:

  • Starter (49 евро в мес.) -1 приложение.
  • Regular (199 евро в мес.) -до 5 приложений.
  • Scalable (от 249 евро в мес.) — более 5 приложений.
Сайт AppsBuilder: http://www.apps-builder.com

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

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

Google Play, App Store, Windows Store полны самыми разнообразнейшими приложениями. Неверно предположить, что все это ассорти создано профессионалами различных уровней. Все больше и больше обычных пользователей создают удобные и простые приложения, совсем не имея навыков программирования. Где и как последовать их примеру, мы подробно расскажем далее, выбрав для примера программы смартфонов на базе Android.

Кому будет полезно самостоятельно созданное приложение

Если вы решили создать Android-приложение без навыков программирования ради спортивного интереса, то можете смело переходить к разделу "Онлайн-конструкторы". Решившимся заняться этим делом для продвижения и популяризации своего бизнеса, творческого или делового проекта важно определить: достаточно ли им простого, созданного самостоятельно приложения или все же необходимо обратиться за помощью к опытным разработчикам.

Итак, когда оптимален данный вариант:

  • начинающему бизнесу или проекту: аудитория простит вам ряд недоработок, сославшись на вашу неопытность;
  • пользователям требуется приложение с простым функционалом - удобная версия сайта, к примеру;
  • пуск неудачного приложения не будет для вас болезненным - вы его создаете, работая на перспективу;
  • вы не хотите зависеть от запросов разработчиков.

Каким должно быть приложение

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

Аудиторию привлекают приложения, которые соответствуют перечисленным пунктам:

  • безопасность;
  • бесперебойное функционирование;
  • удобная навигация;
  • личный кабинет;
  • наличие push-уведомлений;
  • информативность - ответ на все свои запросы человек должен находить внутри приложения.

Выбор конструктора приложений

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

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

Конструктор обязательно должен обеспечивать хостинг приложения, давать вам возможность управлять им, а также публиковать свое творение в Google Play.

Десятка лучших онлайн-конструкторов

Тем, кто ищет, как создать приложение для Android без навыков, предлагается следующая линейка конструкторов, отвечающая всем перечисленным выше требованиям:

1. Mobile Roadie. Один из старейших сервисов, которым пользуется Мадонна, "Цирк Солнца", зоопарк Сан-Диего. Больше всего ориентирован на шоу-бизнес, маркетинговые и PR-агентства. Через созданные проекты можно продавать билеты, перепрофилировать их под конкретное событие. Цена за пользование конструктором не символична: минимум 149$.

2. AppsBuilder. Как создать приложение для Android здесь - достаточно собрать его из готовых шаблонов. Кроме этого, в конструктор добавлены возможности для программистов. Создание одного приложения в месяц обойдется здесь в 49 евро.

3. Viziapps. Конструктор также предлагает готовые шаблоны для вашего приложения, а также возможность отправки с него сообщений на электронную почту, в Twitter, Facebook. Цена минимального месячного пакета: 33$.

4. iBuildApp. Конструктор для тех, кто ищет, как создать простое приложение для Android - с его помощью делаются мобильные программы-каталоги, брошюры, резюме. Помимо английской, доступна и русская версия. За 2 400 рублей в месяц клиент получает возможность трех тысяч установок своего приложения без встроенной рекламы.

5. My-apps.com. Работает и в русской, и в английской версии. Для создания собственного приложения здесь требуется порядка пяти минут, ведь достаточно выбрать только необходимые модули и дизайн программы. Минимальный пакет "Старт" обойдется в 599 рублей в месяц. В сумму входит конструктор приложений только для "Андроида", бесплатные шаблоны и иконки, обновление программы не чаще раза в два месяца.

6. AppGlobus. Российский конструктор доступнен на 8 языках. За 900 рублей в месяц предоставляются: конструирование приложений, панель администратора, отсутствие в проекте встроенной рекламы и ограничений на использование push-уведомлений, количество установок.

7. Biznessapps. Для заинтересованных в том, как создать приложение для Android с нуля, чтобы оно работало на благо бизнеса, это оптимальный вариант: чат, уведомления, корзина для товаров, интеграция с социальными сетями, каталог услуг, раздел новостей. Минимальная плата за создание приложения: 59$ в месяц.

8. Appsmakerstore. Позволяет создавать приложения не только для "Андроида", но и еще для 5 платформ. Интерфейс на 23 языках, в т. ч. и на русском. Ключевая особенность конструктора: уже готовые шаблоны для различных проектов: торговли, салонов красоты, ресторанов и т. д. Месячное использование - 9,78$.

9. TheAppBuilder - бесплатный конструктор, предоставляющий готовые типовые шаблоны для бизнеса, творческих, новостных, спортивных, образовательных проектов. Но один минус - в приложении будет встроенная реклама. Отключить ее предлагается за 5$ в месяц.

10. AppsGeyser. Конструктор предлагает бесплатную конвертацию содержимого сайта в мобильное приложение. Свои творения возможно продавать, а также размещать в них собственную рекламу.

Теперь рассмотрим на примерах конкретных конструкторов создание собственного приложения.

Как создать приложение для Android: выбор шаблона в AppsGeyser

Для работы в этом конструкторе не требуется регистрация - достаточно кликнуть на главной странице на Creat now.

Создание приложения для блога в AppsGeyser

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

  1. Выберите тип блога: RSS, "Тамблер", "Вордпресс" и т. д. Далее - его электронный адрес и цветовое решение для вашего будущего приложения.
  2. Теперь название создаваемой мобильной программы.
  3. В "Дискрипшн" поместите лаконичное и информативное описание приложения (хоть интерфейс на английском, вы можете вводить текст на кириллице).
  4. Выберите из предложенных вариантов логотип приложения или загрузите свой.
  5. Чтобы создать загрузочный файл своего проекта, следует нажать на Creat App. Для этого нужно обязательно пройти регистрацию в системе.
  6. В личном кабинете AppsGeyser вы можете загрузить свое творение на собственный смартфон, а также разместить его в магазине Google Play. Если вы активируете монетизацию, в приложении будет отображаться встроенная реклама, а вам за ее просмотры пользователями будет отсчитываться определенная плата.

В личном кабинете также можно следить за числом загрузок, редактировать приложение, создавать push-баннеры, публиковать проект в других магазинах.

Как создать приложение для Android формата "Гайд"

При помощи того же AppsGeyser возможно также создать приложение-инструкцию, руководство пользователя.

Делается это тоже в несколько простых шагов:

  1. Настройте цветовое решение мобильной программы и способ отображения шагов гайда: по одному или по несколько на активном экране.
  2. Редактор поможет загрузить вам необходимый текст, ссылки, видео или картинки, необходимые для наглядности. Для добавления фотографий воспользуйтесь хостингом Imgur. Скопируйте ссылку изображения на этом ресурсе в Image URL.
  3. В конце работы добавьте описание и логотип своего приложения, затем - клик на Creat App. Приложение создано - осталось проверить его работоспособность и выложить в Google Play.

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

Разберем, как создать приложения для Android с нуля владельцам интернет-магазинов. Для примера будем использовать другой конструктор - Mobi Cart, специализирующийся на этой сфере. Сервис поддерживает русский язык, работает как в платном, так и в бесплатном режиме. Для последнего действует ограничение - добавление не более 10 товаров.

Итак, как создать приложение для Android:

  1. Первый пункт - регистрация. Далее в личном кабинете клик на Creat Application.
  2. Upload logo - загрузка логотипа вашего магазина. На этом этапе вы выбираете также цветовую тему приложения.
  3. Выбор вкладок, страниц, которые будут в вашем приложении: "Новости", "Мой кабинет", "Домашняя", "Магазин", "Контакты" и т. д.

Настройки магазина в Mobi Cart

Для настроек своего интернет-маркета кликните на Store Settings:

  1. Введите название, электронный адрес админа, валюту.
  2. Для использования "Гугл-карт" нужна регистрация ключа API - затем он копируется в окошко.
  3. Отметьте галочкой бесплатную доставку, если ваш магазин ее предлагает. Для наложенного платежа выберите размер наценки (если он равен, к примеру, 12 %, то в Cash On Delivery прописывается 1,12).
  4. В Shipping указывается стоимость доставки для определенного региона. Процесс этот трудоемкий, так как для каждого региона цена указывается вами вручную.
  5. В разделе Tax российские магазины указывают стоимость с включенным в нее НДС, поэтому отметьте галочкой здесь Prices to include tax.
  6. В Payments Gateway укажите платежные системы, с которыми вы работаете. Будьте внимательны - Mobi Cart не поддерживает популярные "Яндекс.Деньги".
  7. Languges - язык вашей мобильной программы. Русский не выставляется по умолчанию, поэтому вам необходимо прописать перевод предложенных команд вручную.
  8. App Vital - здесь указывается название программы и страны, жители которых смогут ее загружать.
  9. Images - логотип приложения, Home Gallery - картинка на главном экране.

Добавление информации о продукции в Mobi Cart

Следующий важный шаг: добавление линейки ваших продуктов в Store Builder. Это можно сделать любым удобным вам методом:

  • с помощью файла CSV, содержащего всю информацию об ассортименте;
  • используя плагин конструктора для синхронизации своего сайта с создаваемой программой;
  • ручной ввод информации в личном кабинете.

Для последнего способа используются два раздела: Departments и Products. Добавление осуществляется с помощью кнопки Add Product. Далее вводится его название, цена, категория, подробное описание.

Прочие полезные опции для магазина в Mobi Cart

Коснемся опций, которые могут оказаться полезны тому, кто интересуется, как создать приложение для Android самому:

  1. More Pages - информация, отображаемая на страничках программы.
  2. Push Notification - ручное создание push-уведомлений. Здесь можно выбрать отсылку как всем пользователям, так и определенным адресатам.
  3. News Tab - копирование новостей в одноименную вкладку из "Твиттера" или RSS-источников. Укажите здесь имя пользователя для первого и URL для второго.
  4. Publish News позволяет вам отправлять новости в приложение самостоятельно.

Перейдя в Create Application - Submit Apps, вы можете создать apk-файл (установочный), согласившись с лицензионным соглашением. При выборе платной версии ваше приложение автоматически загружается в Google Play, при бесплатной - вам предстоит это сделать самостоятельно через Play Console. Инструкции по регистрации в этой системе, а также по загрузке в нее собственного приложения Mobi Cart высылает вам на электронный почтовый ящик.

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