Найти в Дзене

Знакомство с Android. Своё первое приложение.

К предыдущей статье: Первые результаты (Игра на Java «Совы против Хомяков»).

Привет, Дневник!

Ну что ж, прошел примерно месяц с того момента, как я поделился с тобой своим первым простеньким приложением на Java. Чем же я занимался этот месяц? А я решил посмотреть на то, что такое приложения под Android. На чем они пишутся, в чём они пишутся, какой язык там используется. И каково же было моё удивление, когда я узнал, что все приложения под Android в своё время писались именно на Java! А потом появился ещё и язык Kotlin. Но в Kotlin я решил пока не лезть, ибо зачем, если я уже обладал хоть и скромными, но все же достаточными знаниями Java, для того что бы посмотреть на сам принцип разработки приложений под Android изнутри. Ну и что бы не выдумывать колесо, я решил написать тоже самое приложение о смертельной битве Сов и Хомяков, но не просто в абсолютно «деревянном» десктопном варианте, а уже под Android.

Хомяк продул.
Хомяк продул.

К сожалению, нажать на волшебную кнопку и автоматически превратить проект на Java, т.е. свой java.jar архив в новый android.apk архив не получится, всё придётся писать заново. Но имея чёткое представление о том, как всё должно выглядеть, делать это уже гораздо проще, что даёт возможность сосредоточится на моментах, связанных именно с Андроидом, а не с внутренней работой самого приложения. И таких моментов, и особенностей там довольно много.

Первым делом нужно заняться вёрсткой, создать в xml файлах макеты своих активити, фрагментов, диалоговых окон, причем они должны быть достаточно «резиновыми», чтобы подстраиваться под великое множество размеров и разрешений устройств, ведь на Андроиде может быть что угодно, начиная от часов и заканчивая телевизором. В этом мне помогло то, что на Java я писал не консольное, а десктопное приложение, и что такое layout, button, textview и т.д. уже знал. С нуля пришлось бы ещё и в этом разбираться. Я уж молчу о кастомизации всех этих элементов. Для начала я решил ограничиться версией для смартфонов различного калибра. На планшете, например, приложение тоже запустится и будет работать, но выглядеть оно будет довольно странно. Под большие экраны нужно писать свои макеты.

Ещё одной особенностью Андроида являются жизненные циклы активити и фрагментов. Это как у человека, рождение, взросление, юность, зрелость, старость, смерть. Только, в отличии от человека, активити может перейти, например, из старости обратно в юность. Поэтому нужно понимать на каком этапе жизни активити должен срабатывать тот или иной написанный вами метод и в какие моменты активити меняет свою «жизнь».

А ещё часть написанного кода может отлично работать в Android 9 и приводить к вылету приложения в Android 12, или наоборот. С одной стороны, это весьма неприятно, т.к., представьте, вы написали приложение, вышла новая версия Android и на всех новых устройствах ваше приложение не работает или выдаёт кучу ошибок. Значит его нужно переписывать, исправлять. А с другой стороны, это означает, что всем приложениям нужна поддержка. Для меня, как для человека без пяти минут безработного, это означает, что если развиваться в этом направлении, то всегда будет чем заниматься.

Что касается самой игры, естественно, я не просто скопировал то что уже было написано, я постарался придумать и написать что-то новенькое. Так был добавлен новый режим игры. В предыдущем посте я описывал существующие уровни сложности, и основным их сходством было то, что какой бы режим вы не выбрали, поведение программы было предопределено, вы знали, как она будет с вами играть. Как дурачок или как профи. В новом же режиме программа будет вести себя не предсказуемо. Может у неё сейчас плохое, злое настроение и она будет всех рвать как Тузик грелку, а может она встала не с той ноги и у неё внимательность и сосредоточенность на игре отсутствует? Даже я не знаю, как она поведет себя в той или иной партии.

Кроме того, в десктопной версии счет битв сохранялся только на время игровой сессии. Т.е. выход из приложения всё обнулял. Теперь же счёт для каждого режима сохраняется и после закрытия приложения. Зайдя в него снова, можно продолжать набирать очки боевой славы. Более того, теперь это не просто счёт, он влияет на то какие звание носят наши герои. Т.е. от показателей проведённых битв и их результатов зависит уровень и звание героя. Для этого пришлось сначала придумать логику, все зависимости и формулы прописать в Excel, убедиться, что всё считается как было задумано и потом уже перенести эту логику в код программы. В результате, теоретически, герои могут получить 50 различных вариантов своего боевого статуса. Или можно сбросить счет и начать всё заново, такой механизм тоже прописан.

Хомяк отыгрался
Хомяк отыгрался

Для такой маленькой игры это конечно всё ерунда. Но это дает опыт, определённое понимание того как что работает. А опыт можно применять уже где угодно.

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

Ну и на последок коротенькое видео с телефона.

А скачать и попользовать приложение можно на RuStore.