Багато програмістів хочуть зайнятися розробкою програм під 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 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 проект».
  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. Перейдіть на вкладку Діяльність_main.xmlшвидше за все вона вже активна.
  2. Переконайтеся, що внизу екрана активна вкладка Design(швидше за все це так).
  3. Перетягніть мишею фразу « Hello, World! » з верхнього лівого кута телефону в центр екрана.
  4. У лівій частині екрану знаходиться дерево папок. Відкрийте папку під назвою « values».
  5. У цій папці двічі клацніть файл « strings.xml».
  6. У цьому файлі знайдіть рядок, що містить текст « Hello world!» та додайте до цього тексту « Welcometomyapp! ».
  7. Поверніться на вкладку « Діяльність_main.xml».
  8. Переконайтеся, що текст знаходиться в центрі екрана телефону і містить текст « Helloworld! Welcometomyapp! ».

Етап 4: Додаємо Кнопку

  1. На вкладці « Діяльність_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. Перейдіть на вкладку « Діяльність_second.xml» і переконайтеся, що внизу вибрано вкладку « Design».
  6. Перемістіть текст із верхнього лівого кута телефону до центру екрана, як ми робили на попередніх кроках.
  7. Переконайтеся, що текстовий блок все ще вибраний (синя рамка) і в правому нижньому куті властивостей об'єкта знайдіть рядок « id» та введіть туди « text2 ».
  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. Переконайтеся, що в текстовому полі тепер написано Welcometothesecondpage! » і блог розташований у центрі екрана.

Етап 6: Прописуємо дію для кнопки


Етап 7: Тестуємо додаток

  1. На панелі інструментів у верхній частині вікна Android Studio натисніть зелений символ відтворення.
  2. У вікні " ChooseDevice» виберіть пункт « Launchemulator» та виберіть пристрій.
  3. Натисніть на кнопку " OK».
  4. Коли емулятор запуститься (це може тривати тривалий час) програма автоматично відкриється на віртуальному пристрої.
  5. Переконайтеся, що весь текст відображається правильно і натискання кнопки призводить до наступної сторінки.

Увага: Якщо ви отримуєте повідомлення « HAX kernel module is not installed!», то тут можливі два варіанти. Справа в тому, що цю віртуалізацію підтримують лише сучасні процесори Intel і вам потрібно лише включити її в BIOS. Якщо ж у вас процесор, який не підтримує цю функцію, вам доведеться протестувати програму на реальному телефоні або скористатися не вбудованим, а стороннім емулятором.

Як отримати файл.apk в Android Studio

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

Ви познайомилися з розробкою додатків для андроїд і можливо пробудили в собі бажання вивчити все, що необхідно, щоб надалі розвиватися в цьому напрямі.

ХХІ століття. Епоха цифрових технологій та інтернету. Реальність дедалі впевненіше стає віртуальною. Сьогодні чи не кожен перший мешканець будь-якої розвиненої країни не розлучається зі смартфоном. І якщо частина віддає перевагу модним Iphone та операційній системі IOS, то більшість користується пристроями на Android. Адже вони дешевші і вибір додатків набагато багатший. І щоб створювати такі додатки, потрібні спеціально навчені люди, які називають програмістами. Що потрібно знати та вміти для того, щоб поринути в Android-програмування?

Інструменти для розробки

Розробка вимагає спеціальних знань, а також потрібна наявність інструментів.

Перше, що потрібно - це робочий ноутбук або настільний комп'ютер. Тільки він має бути не дуже давнім. Вибір на користь ноутбука виправданий тим, що займатися навчанням та практикою можна у будь-якому зручному місці.

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

Встановлення необхідного ПЗ

Перед початком розробки на комп'ютер слід інсталювати драйвери для смартфона. Це якщо на комп'ютері інстальовано Windows. Інші системи обходяться без спеціальних драйверів. Шукати їх краще на офіційному сайті виробника пристрою. Якщо в процесі програмування виникатимуть питання (а вони виникатимуть постійно), то потрібний доступ до інтернету. Розробка під Android відбувається у програмі "Андроїд Студіо". Завантажується вона з офіційного сайту. Розроблено програму Google.

Які джерела вибрати?

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

Яку книгу вибрати? Добре себе зарекомендувала книга із серії Head First «Програмування для Android». У ній у доступній для новачка формі описаний весь процес. Автори обрали не нудну та монотонну, а гумористичну манеру викладу матеріалу з масою цікавих завдань.

Мова програмування

Основною мовою, якою розробляються програми, є Java. Тому потрібно знати його хоча б на початковому рівні для того, щоб Android програмування давалося легко. Без знань Java нічого не вийде. Це одна з найбільш затребуваних у всьому світі мов програмування. Він освоєння набагато простіше, ніж мови C і C++. Java строго типізований, і це прищепите хороші манери написання коду. Для вивчення цієї мови також є книга від Head First. Програмування для Android здолає будь-хто. Головне, щоби була мотивація.

Мотивація та способи вивчення

Для початку можна починати з 15 хвилин на день. Якщо буде затягувати, поступово додавати по 5 хвилин. Спочатку немає потреби в багатогодинному сидінні за комп'ютером. Таке під силу лише професіоналам. Та й бажання може зникнути.

Програмуванням цікавіше займатися над самотужки. Можна знайти охочих серед знайомих. Якщо таких немає, завжди є інтернет. Соціальні мережі та форуми допоможуть знайти однодумців. А така група фанатів програмування надалі може перетворитися на велику міжнародну корпорацію.

Спочатку можна переглядати чужий код і намагатися його зрозуміти, внести якісь свої правки. Вихідники завжди можна знайти у вільному доступі. Потім можна придумати додаток для друга чи когось із рідних та спробувати його реалізувати. Навіть повноцінно працюючий простий калькулятор, написаний своїми руками, радуватиме новачка. Далі можна ускладнювати завдання. Найголовніше – практикуватися щодня. Теорія – це добре, але без практики програмістами не стають.

Є один добрий прийом щодо: при проходженні нової теми треба спробувати пояснити її іншій людині. Якщо він зрозуміє, значить, мети досягнуто і тему засвоєно.

Може настати момент, коли захочеться кинути 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 відрізняє гарну ідею програми від гарної реалізації.

А якими мовами пишете ви?

У будь-якій справі найскладніше – це початок. Часто буває важко увійти в контекст, з чим зіткнувся і я, вирішивши розробити свій перший Android-додаток. Ця стаття для тих, хто хоче почати, але не знає з чого.

Стаття торкнеться всього циклу розробки програми. Разом ми напишемо просту гру "Хрестики-Нолики" з одним екраном (в ОС Android це називається Activity).

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

Встановлення необхідних програм та утиліт

Перелічу необхідні інструменти. Їх 3:

  1. IDE з підтримкою розробки для 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); buildGameFiel

Тепер необхідно реалізувати метод 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; ) () ( 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(); // буде реалізований пізніше )

Метод будівництваGameField() класу 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. Він буде видно тільки з КрестікінолікіActivity.
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; // Заповнення поля 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 lastPlay i = 0, len = field.length;

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(); i = 0, len = field.length;

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 ; 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 ; 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 WinnerCheckerDiag 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. Дякую за увагу!

Відео готової програми