Как написать java приложение для android
Перейти к содержимому

Как написать java приложение для android

  • автор:

Пишем первое приложение для Android

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

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

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

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

    ; ;
  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 строчками:

Метод setContentView (равносильно this.setContentView) устанавливает xml-макет для текущего экрана. Далее xml-макеты будем называть «layout», а экраны — «Activity». Layout в приложении будет следующий:

Для этого приложения идеально подойдет TableLayout. Id можно присвоить любому ресурсу. В данном случае, TableLayout присвоен При помощи метода findViewById() можно получить доступ к виду:

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

Square.java

Player.java

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

Game.java

Инициализация Game в конструкторе KrestikinolikiActivity.

Метод buildGameField() класса KrestikinolikiActivity. Он динамически добавляет строки и колонки в таблицу (игровое поле):

В строке 8 создается объект, реализующий интерфейс View.OnClickListener. Создадим вложенный класс Listener. Он будет виден только из KrestikinolikiActivity.

Осталось реализовать логику игры.

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

К. О. подсказывает, что в крестики-нолики выирывает тот, кто выстроет X или O в линию длиной, равной длине поля по-вертикали, или по-горизонтали, или по-диагонали. Первая мысль, которая приходит в голову — это написать методы для каждого случая. Думаю, в этом случае хорошо подойдет паттерн Chain of Responsobility. Определим интерфейс

Так как Game наделен обязанностью выявлять победителя, он реализует этот интерфейс. Настало время создать виртуальных «лайнсменов», каждый из которых будет проверять свою сторону. Все они реализует интерфейс WinnerCheckerInterface.

WinnerCheckerHorizontal.java

WinnerCheckerVertical.java

WinnerCheckerDiagonalLeft.java

WinnerCheckerDiagonalRight.java

Проинициализируем их в конструкторе Game:

Победителя проверяем после каждого хода. Добавим кода в метод onClick() класса Listener

Метод gameOver() реализован в 2-х вариантах:

Для Java, gameOver(Player player) и gameOver() — разные методы. Воспользовавшись Builder’ом Toast.makeText, можно быстро создать и показать уведомление. refresh() обновляет состояние поля:

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

Hello Kitty — Создаём первое приложение для Android

Cat gives five

После установки Android Studio (далее Студия) можно приступать к созданию своей первой программы.

Учтите, что студия постоянно обновляется, поэтому внешний вид окон и другие детали могут отличаться от данного примера. Иногда изменения носят косметический характер и новичкам достаточно просто разобраться и вникнуть в изучаемый материал. А иногда изменения слишком значительны и могут сбить с толку. Скриншоты у многих уроков сделаны со старых версий студии от 2.3 до 4.2. Если что-то сильно изменилось, то напишите мне, я постараюсь заменить картинки.

В качестве языка программирования для Android используется Java или Kotlin. Для создания пользовательского интерфейса используется XML.

Здесь следует сделать небольшое отступление. В Android Studio 3.0 добавлена полноценная поддержка нового языка Kotlin, разработанная котанами. Google объявила в 2017 году новый «кошачий» язык основным. Но вы должны понимать, что за предыдущие годы было написано огромное количество примеров на Java. Если вы новичок в программировании, то лучше в первый период обучения полностью сосредоточиться на Java, вам будет проще находить ответы на вопросы. Kotlin от вас никуда не денется, перейти потом на него будет проще, а вот обратный процесс будет проходить тяжелее. Когда немного освоитесь в Java, то можете параллельно изучать примеры на Kotlin. Google сейчас активно переписывает документацию под Kotlin, но до полного перехода ещё далеко, даже меньше 50%. Новые уроки я пишу в основном под Kotlin, но на сайте полно примеров под Java.

По традиции, заложенной в прошлом веке, каждый программист должен был написать «Hello World!» (Здравствуй, Мир!) в качестве первой программы. Времена меняются, и программа «Hello World!» уже встроена в среду разработки под Android в целях совместимости, а современные программисты должны писать программу Hello Kitty! (Привет, киска!). Согласитесь, что здороваться с котёнком имеет больше здравого смысла, чем с каким-то миром.

Разобьём задачу на две части. Сначала запустим готовую программу Hello World! без написания кода, чтобы убедиться, что весь инструментарий корректно установился, и мы можем создавать и отлаживать программы. А потом уже напишем свою первую программу.

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

Запускаем Студию и выбираем File | New | New Project. . Появится диалоговое окно мастера.

New Project

Окно имеет несколько разделов. В основном, мы будем использовать раздел Phone and Tablet.

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

Несколько лет назад был только один шаблон. Список шаблонов постоянно меняется (добавляют и удаляют). В 3.1 было 13, в Android Studio 3.2 добавили 14-й шаблон Fragment+ViewModel. А в 3.3 число сократилось до 12 (причём один из них относится к экзотическому C++). В версии 4.0 шаблонов стало 15.

В версии Dolphin 2020.3.1 шаблонов стало 21.

  • No Activity
  • Basic Activity
  • Basic Activity (Material 3)
  • Bottom Navigation Activity
  • Empty Compose Activity
  • Empty Compose Activity (Material 3)
  • Empty Activity
  • Fullscreen Activity
  • Google AdMob Ads Activity
  • Google Maps Activity
  • Google Pay Activity
  • Login Activity
  • Primary/Detail Flow
  • Navigation Drawer Activity
  • Responsive Activity
  • Settings Activity
  • Scrolling Activity
  • Tabbed Activity
  • Fragment + ViewModel
  • Game Activity(C++) ( NEW! )
  • Native C++

В версию Dolphin добавили новый шаблон Game Activity(C++) (стало 21).

В версию Chipmunk добавили три новых шаблона (стало 20).

Шаблон Empty Activity предназначен для обычных телефонов. На картинке над названием шаблона вы видите приблизительный вид приложения с использованием данной заготовки. Для учебных программ в 99% подойдёт этот вариант. Практически все примеры на сайте написаны с помощью данного шаблона.

Шаблон Primary/Detail Flow (раньше было Master/Detail Flow, BLM и всё такое) предназначен для планшетов с реализацией двухпанельного режима. Шаблон Fullscreen Activity можно использовать для игр, когда требуется дополнительное пространство без лишних деталей. Другие шаблоны нужны для создания приложений с гуглокартами или сервисами Google Play.

В следующем окне настраиваются параметры проекта.

Configure your project

Поле Name — понятное имя для приложения, которое будет отображаться в заголовке приложения. По умолчанию у вас уже может быть My Application. Заменим на Hello World. В принципе вы могли написать здесь и Здравствуй, мир!, но у Android есть замечательная возможность выводить нужные строки на телефонах с разными языками. Скажем, у американца на телефоне появится надпись на английском, а у русского — на русском. Поэтому в первоначальных настройках всегда используются английские варианты, а локализованные строки подготовите позже. Необходимо сразу вырабатывать привычку к правильному коду.

Поле Package name формирует специальный Java-пакет. В Java используется перевёрнутый вариант для наименования пакетов, поэтому сначала идёт ru, а потом уже название сайта. Пакет служит для уникальной идентификации вашего приложения, когда вы будете его распространять. Если сто человек напишет сто приложений с названием «Cat», то будет непонятно, где приложение, написанное разработчиком Василием Котовым. А приложение с именем пакета ru.vaskakotov.cat проще найти. Обратите внимание, что Гугл в своей документации использует пакет com.example в демонстрационных целях. Если вы будете просто копировать примеры из документации и в таком виде попытаетесь выложить в Google Play, то у вас ничего не выйдет — это название зарезервировано и запрещено к использованию в магазине приложений.

Третье поле Save location позволяет выбрать место на диске для создаваемого проекта. Вы можете создать на своём диске отдельную папку для своих проектов и хранить свои программы в ней. Студия запоминает последнюю папку и будет автоматически предлагать сохранение в ней. В случае необходимости вы можете задать другое местоположение для отдельного проекта через кнопку с значком папки.

В поле Language можно выбрать язык: Kotlin или Java.

В блоке Minimum API level выбираем минимальную версию системы, под которую будет работать приложение. Выберите свой вариант. На данный момент Гугл поддерживает версии, начиная с API 9, выпуская специальные библиотеки совместимости для старых устройств. Но вы можете выбрать более современный вариант. У меня в наличии телефон с минимальной версией Android 5.0, поэтому я выставляю этот вариант.

Если щёлкнуть по ссылке Help me choose, то откроется окно с графиком. Если вам интересно, можете посмотреть, но котиков там нет.

Если по каким-то причинам нужно поддерживать старые библиотеки, то ставьте флажок Use legacy android.support libraries. К вам это вряд ли относится, игнорируем флажок.

Сразу покажу приём, который вам пригодится в дальнейшем при обновлении библиотек. Откройте файл build.gradle, который относится к модулю.

Gradle

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

Gradle implementation

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

Gradle implementation

Затем нажмите ссылку синхронизации Sync Now в верхнем правом углу студии.

Gradle sync

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

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

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

Боковая левая часть студии имеет несколько боковых вкладок. Скорее всего у вас будет активна первая вкладка 1:Project. Вкладки Structure и ResourceManager и другие используются гораздо реже.

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

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

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

Сейчас нас должна интересовать папка app. Раскройте её. В ней находятся папки: manifest, java, res.

manifests

Папка manifests (раньше была в единственном числе) содержит единственный файл манифеста AndroidManifest.xml. В этом файле должны быть объявлены все активности, службы, приёмники и контент-провайдеры приложения. Также он должен содержать требуемые приложению разрешения. Например, если приложению требуется доступ к сети, это должно быть определено здесь. «AndroidManifest.xml» можно рассматривать, как описание для развёртывания Android-приложения.

Более подробно о структуре манифеста читайте в дополнительной статье Файл AndroidManifest.xml

Папка java содержит три подпапки — одну рабочую и два для тестов. Рабочая папка имеет название вашего пакета и содержит файлы классов. Сейчас там один класс MainActivity. Папки для тестов можете не трогать. Если вы знаете, как работают пакеты в Java, то можете создавать новые папки и подпапки.

Папка res содержит файлы ресурсов, разбитых на отдельные подпапки. В режиме Android выводятся виртуальные папки, если вы посмотрите на реальное содержимое на диске компьютера, то структура будет немного иной. Чтобы увидеть реальную структуру, не обязательно открывать Проводник (Windows) и искать там свой проект, можно просто переключиться в режим Project.

  • drawable — в этих папках хранят графические ресурсы — картинки и xml-файлы, описывающие цвет и фигуры. В реальности на диске находятся папки drawable, drawable-anydpi, drawable-hdpi, drawable-mdpi, drawable-v24, drawable-xhdpi, drawable-xxhdpi. Состав папок менялся в каждой версии студии, сейчас там вообще две папки drawable и drawable-v24
  • layout — в данной папке содержатся xml-файлы, описывающие внешний вид форм и различных элементов форм. После создания проекта там уже имеется файл activity_main.xml, который отвечает за внешний вид главного окна приложения.
  • mipmap — здесь хранят значки приложения под разные разрешения экрана. В реальности это папки mipmap-anydpi-v26, mipmap-hdpi, mipmap-mdpi, mipmap-xhdpi, mipmap-xxhdpi, mipmap-xxxhdpi
  • values — тут размещаются строковые ресурсы, ресурсы цветов, тем, стилей и измерений, которые мы можем использовать в нашем проекте. Здесь вы можете видеть файлы colors.xml, strings.xml, styles.xml . В старых проектах был ещё файл dimens.xml, сейчас от него отказались

В студии версии 4.1 убрали файл styles.xml, а вместо неё добавили файл themes.xml в папке values, и файл themes.xml в новой папке values-night. Файлы предназначены для обычной и ночной темы.

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

Работа с проектом — Здравствуй, Мир!

Как уже говорилось, программа Hello, World! уже встроена в любой новый проект, поэтому вам даже не нужно ничего писать. Просто нужно запустить проект и получить готовую программу!

Для изучения вам нужно открыть два файла — MainActivity.kt (скорее всего он уже открыт) и activity_main.xml (res/layout) в центральной части Студии. Если файлы не открыты, то откройте их самостоятельно двойным щелчком для редактирования (или просмотра). Таким способом вы можете открыть любой нужный вам файл.

Не будем пока изучать код, а просто нажмём на зелёный треугольник Run (Shift+F10) на панели инструментов в верхней части студии для запуска приложения.

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

Если всё сделали правильно, то в эмуляторе или на устройстве загрузится ваша программа. Поздравляю!

Итак, если программа запустилась, то увидите окно приложения с надписью Hello World!. Заголовок у программы будет также Hello World (берётся название проекта). Все эти строки можно найти в файле res/values/strings.xml и отредактировать при желании.

Hello World

Теперь посмотрим на код. Сначала изучим activity_main.xml.

Смотреть его можно в разных режимах — Code, Split, Design (до версии 3.6 — Design и Text).

Откройте в режиме Code. Подробнее о режимах чуть ниже.

Сейчас в студии используется новый код шаблона на основе ConstraintLayout, который появился в Android Studio 2.3 в марте 2017 года. Раньше использовался другой код с RelativeLayout (а ещё раньше и другой код с LinearLayout). Если вам будут попадаться старые примеры, то в студии есть контекстное меню, которое поможет сконвертировать старый код в новый.

Немного о XML-коде. Имеется специальный контейнер ConstraintLayout, в котором размещён компонент TextView, предназначенный для вывода текста.

Теперь посмотрим на Kotlin-код (MainActivity.kt)

В первой строке идёт название пакета — его мы задавали при создании проекта (Package Name). Далее идут строки импорта необходимых классов для проекта. Для экономии места они свёрнуты в одну группу. Разверните её. Если однажды вы увидите, что имена классов выводятся серым цветом, значит они не используются в проекте (подсказка Unused import statement) и можете спокойно удалить лишние строки. Также они могут удаляться автоматически (настраивается).

Далее идёт объявление самого класса, который наследуется (двоеточие :) от абстрактного класса Activity. Это базовый класс для всех экранов приложения. У вас будет AppCompatActivity. В старых версиях не было плюшек, которые появились после Android 4, поэтому для них была создана специальная библиотека совместимости, которая позволяет использовать новинки от новых версий Android в старых программах. Класс AppCompatActivity как раз и относится к библиотеке совместимости. Считайте её родственником базовой Activity. У неё есть все нужные методы и вспомогательные классы, но названия могут немного различаться.

В самом классе мы видим метод onCreate() – он вызывается, когда приложение создаёт и отображает разметку активности. Метод помечен ключевым словом override (переопределён из базового класса). Ключевое слово может пригодиться вам. Если вы сделаете опечатку в имени метода, то компилятор сможет предупредить вас, сообщив об отсутствии такого метода у родительского класса Activity.

Разберём код метода.

Строка super.onCreate(savedInstanceState) – это конструктор родительского класса, выполняющий необходимые операции для работы активности. Эту строчку вам не придётся трогать, оставляйте без изменений.

Вторая строчка setContentView(R.layout.activity_main) представляет больший интерес. Метод setContentView(int) подключает содержимое из файла разметки. В качестве аргумента мы указываем имя файла без расширения из папки res/layout. По умолчанию проект создаёт в нём файл activity_main.xml. Вы можете переименовать файл или создать свой файл с именем cat.xml и подключить его к своей активности. Тогда код будет выглядеть так:

Чтобы ваш код был аккуратным, старайтесь придерживаться стандартов. Если вы создаёте разметку для активности, то используйте префикс activity_ для имени файла. Например, разметка для второй активности может иметь имя activity_second.xml.

Hello Kitty!

Вы создали новую программу, но это ещё не повод считать себя программистом, так как вы не написали не единой строчки кода. Настало время набраться смелости и создать программу «Hello Kitty!».

Создаём новый проект. Снова выбираем шаблон Empty Activity и устанавливаем нужные настройки.

Kotlin support

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

Файлы XML-разметки находятся в папке res/layout вашего проекта. Слово «res» является сокращением от слова «resources» (ресурсы). Папка содержит ресурсы, не связанные с кодом. Кроме разметки, там же содержатся изображения, звуки, строки для локализации и т.д.

Раскройте слева в структуре проектов папки res/layout и дважды щёлкните на файле activity_main.xml, если он у вас закрыт. Обратите внимание, что XML-файлы можно просматривать в разных режимах: текстовом, визуальном и смешанном. Для этого предназначены три вкладки в верхней части окна редактора: Code, Split, Design (если вы не кот и не пользуетесь мышкой, а предпочитаете клавиатуру, то используйте комбинацию Alt + Shift + Left/Right Arrow (Windows) для циклического переключения между режимами).

Переключитесь в режим Code (текстовый режим).

Структура XML-файла достаточна проста — стандартное дерево XML-элементов, где каждый узел является именем класса View (TextView — один из элементов View). Вы можете создать интерфейс программы, используя структуру и синтаксис XML. Подобный подход позволяет разделить код программы и визуальное представление.

Когда разметка открыта в графическом представлении, то слева от основной части редактора кода можно увидеть панель инструментов, в которой сгруппированы различные элементы по группам Widgets, Text, Layouts и так далее. В группе Buttons найдите элемент ImageButton, перетащите её на форму и отпустите. Точное расположение нас не интересует, поэтому не заморачивайтесь по этому поводу, постарайтесь разместить компонент в центре экрана активности. У вас появится диалоговое окно с просьбой выбрать изображение для кнопки. Пока выбирайте любую, например, первую. Потом заменим.

Теперь научимся менять фон для экрана приложения. Сейчас у нас экран белого цвета. Возвращаемся в файл разметки activity_main.xml. Справа найдите вкладку Attributes, в которой отображаются свойства для выбранного элемента. А слева есть вкладка Component Tree, который отображает структуру компонентов на экране. Вам нужно нужно выделить какой-нибудь компонент, что на вкладке свойств увидеть все доступные свойства компонента. Новички часто путаются на первых порах и начинают менять свойства не у тех элементов, которые им были нужны. Сейчас у вас есть окно активности, графическая кнопка ImageButton и текстовая метка TextView с надписью Hello World!. Пощёлкайте по этим элементами, чтобы увидеть, как меняется содержание свойств в панели свойств. Так как мы собираемся работать с фоном экрана приложения, то щёлкните на ConstraintLayout. В панели свойств отобразятся самые употребительные свойства выбранного компонента. К ним относятся идентификатор, ширина и высота.

Прокручиваем список атрибутов в All attributes и находим свойство background. Щёлкните рядом с этим словом во второй колонке, где нужно прописывать значения. Появится текстовое поле, в которое можно ввести значение вручную. Рядом есть маленькая кнопка, которая запустит диалоговое окно для создания ресурса.

Переходим на вкладку Color и выбираем цвет. Вы можете выбрать цвет, определённый в приложении (секция app) или в системе (секция android).

Давайте выберем цвет colorAccent и нажмём кнопку OK.

res

Экран окрасится в розовый цвет. Получилось глаМУРненько (в предыдущих версиях в качестве colorAccent использовался другой цвет, поэтому здесь расхождение между описанием и реальным цветом. Можете самостоятельно попытаться установить розовый цвет.

Если переключиться в текстовый режим, то увидим, что у элемента ConstraintLayout добавилась строчка:

Мы связали фон экран с именем цветового ресурса. Существует неправильный подход, когда можно сразу напрямую указать значение цвета.

Старайтесь так не делать, всегда используйте ресурсы.

Далее поменяем картинку для графической кнопки. Находим подходящее изображение и копируем его в папку res/drawable. Картинку можете взять у меня.

Hello Kitty

Простое перетаскивание из проводника в папку студии не сработает. Поэтому лучше скопировать картинку в буфер, затем щёлкнуть правой кнопкой мыши на папке drawable в студии, выбрать команду «Вставить». Сначала появится первое диалоговое окно для выбора папки, выбираем папку drawable.

Возможно первое окно у вас не появится, тогда в следующем диалоговом окне подтверждаем операцию копирования файла.

Когда вы поместите графический файл в указанную папку, то студия автоматически создаёт ресурс типа Drawable с именем файла без расширения, к которому можно обращаться программно.

Выделяем элемент ImageButton на форме и в панели свойств выбираем свойство srcCompat, щёлкаем на кнопку и выбираем в диалоговом окне ресурс в категории Drawable — вы там должны увидеть ресурс pinkhellokitty (имя добавленного ранее файла).

srcCompat

Мы закончили работу с графическим интерфейсом приложения. Напоследок, выделите элемент TextView с надписью Hello, World и в окне свойств посмотрите на его идентификатор (ID). Если там пусто, то удалите его, он не оправдал наших надежд. В разделе Text найдите компонент TextView (самый первый) и перетащите его на форму приложения. Постарайтесь разместить его под графической кнопкой с котёнком.

У этого компонента точно будет что-то написано в свойстве id. Скорее всего, это будет textView. Запомните его. Впрочем, мы могли не удалять первый компонент, а прописать идентификатор вручную. Но мне пришлось бы объяснять лишние детали, а так сразу получили результат. Вот я не удалял его и у меня экран выглядит так. А у вас будет текст TextView. Ничего страшного.

Если текст вам кажется мелковатым, то у свойства textAppearance установите значение AppCompat.Display2.

Hello Kitty

У меня получилось следующее.

Здесь очень много кода, который генерирует ConstraintLayout при размещении и выравнивании компонентов. Это новый контейнер, к которому нужно привыкать. Сейчас нет смысла объяснять принцип его работы, на сайте есть отдельная статья по нему. Пока советую при ручном размещении нажимать значок Infer Constraints (изображение волшебной палочки) в режиме дизайна — студия попытается предугадать нужные настройки самостоятельно.

Различия c Java начинаются с имени файла класса MainActivity.kt. У него расширение kt вместо java, но располагается в аналогичном пакете как у Java. Скорее всего он у вас уже открыт в редакторе. Если нет, то двойным щелчком запустите его из левой части студии.

Синтаксис кода немного отличается от Java. Первое, что бросается в глаза — не нужно ставить точку с запятой в конце оператора.

Так как мы собираемся менять текст в текстовой метке, необходимо прописать данный элемент в коде. До метода onCreate() наберите строчку:

Мы объявили переменную типа TextView под именем mHelloTextView.

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

Далее внутри метода onCreate() после вызова метода setContentView() добавьте строку:

Избегайте соблазна скопировать строку с сайта и вставить в код, пишите самостоятельно и активно используйте автозавершение (Ctrl+Пробел) при наборе слов. Студия часто сама активно помогает подсказками. Теперь система знает о существовании элемента TextView, и мы можем к нему обращаться для изменения различных свойств, например, поменять текст.

Далее объявляем компонент ImageButton и пишем код для обработчика щелчка — обращаемся к элементу mHelloTextView и через его метод setText() программно меняем текст на нужные слова.

Общий код класса получится следующим. Я намерено оставил вещи, которые можно было упростить.

Запускаем программу и нажимаем на кнопку с изображением котёнка. Если всё сделали правильно, то отобразится замечательная фраза. С этого момента можете считать себя настоящим программистом — вы научились создавать цветовые и графические ресурсы, менять фон у приложения через XML-разметку, обрабатывать нажатия кнопки и выводить текстовые сообщения.

Hello Kitty

В данном случае я написал код в Java-стиле, не используя особенностей Kotlin. Студия подчеркнёт волнистой чертой метод setText() и предложить заменить его на свойство.

Kotlin позволяет заменить пары Java-методов вида getXX/setXX свойствами без приставок. Были методы getText()/setText(), остались рожки да ножки свойство text. Если вы что-то присваиваете свойству, значит вы хотите использовать setText(), а если хотите прочитать значение свойства — значит вы хотите вызвать getText(). Вот так изящно работает Kotlin.

Второй момент связан с рефакторингом кода. Раньше в эпоху Java было принято присваивать глобальным переменным имена с приставкой m (member). Сейчас в этом нет необходимости, студия выделяет подобные переменные другим цветом. Чтобы вручную не изменять в проекте все упоминания переменной, используют так называемый рефакторинг (изменение кода без потери его функциональности). Сделать это проще всего через комбинацию клавиш SHIFT+F6 . Выделяем нужное слово, нажимаем указанную комбинацию клавиш и выбираем один из предложенных вариантов или печатаем свой вариант. В нашем случае подойдёт вариант helloTextView.

Refactoring

Можно заменить строчку кода.

В папке app\build\outputs\apk проекта можно найти готовый APK-файл, который вы можете выложить у себя на сайте и дать скачать своим знакомым (в телефоне должно быть разрешение на установку неподписанных приложений), вы станете невероятно круты в их глазах.

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

Пример для Java

Примечание: Для примера на Java — Там же в окне свойств у ImageButton находим свойство onClick и вручную прописываем onClick — это будет именем метода для обработки нажатия на кнопку. Вы можете придумать и другое имя, например, onButtonPressed. Для Kotlin можно не использовать эту конструкцию.

В текстовом режиме установите курсор мыши внутри текста «onClick» у кнопки и нажмите комбинацию Alt+Enter

Комбинация клавиш

В всплывающем окне выберите вариант Create ‘onClick(View)’ in ‘MainActivity’.

onClick

В коде класса MainActivity появится заготовка для обработки щелчка кнопки.

Раз уж у нас теперь открыт файл MainActivity.java, то продолжим теперь работу в нём. Так как мы собираемся менять текст в текстовой метке, необходимо прописать данный элемент в коде. До метода onCreate() наберите строчку:

Мы объявили переменную типа TextView под именем mHelloTextView.

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

Далее внутри метода onCreate() после вызова метода setContentView() добавьте строку:

Избегайте соблазна скопировать строку с сайта и вставить в код, пишите самостоятельно и активно используйте автозавершение (Ctrl+Пробел) при наборе слов. Студия часто сама активно помогает подсказками. Теперь система знает о существовании элемента TextView, и мы можем к нему обращаться для изменения различных свойств, например, поменять текст.

В старых примерах вам может встретиться вариант со скобками.

Если вы используете компилятор compileSdkVersion 26 и выше, то скобки с названием компонента можно опустить, так как изменилась сигнатура метода.

Эта возможность появилась совсем недавно, поэтому во всех старых примерах будет попадаться старый код. Можете сразу привыкать к новому способу, студия будет подсказывать о новой возможности.

Переходим к заготовке для щелчка кнопки.

В следующих занятиях мы подробнее разберём работу с данным методом, пока просто пишем код между фигурными скобками:

Мы обращаемся к элементу mHelloTextView и через его метод setText() программно меняем текст на нужные слова.

Исходный код для ленивых

Здороваемся с вашим котом (Kotlin)

Программа получилась замечательная, но у неё есть недостаток. Она показывает одну и ту же фразу «Hello Kitty!». Вряд ли ваш кот знает английский, да и здороваться лучше по имени. Не пытайтесь с котом мяукать, иначе разговор выглядит следующим образом.

Разговор с котом

Поздороваемся с котом по человечески. Найдите в разделе Text компонент Plain Text и перетащите его на экран активности, разместив где-то над картинкой. Оставляем все свойства без изменений, разве только в свойстве hint можно добавить строчку-подсказку, которая будет исчезать при вводе текста.

Отредактируем код для щелчка кнопки.

Мы внесли небольшую проверку. Если в текстовом поле пустой текст, мы по-прежнему выводим надпись «Hello Kitty!». Если пользователь введёт имя своего кота, то приложение поздоровается с ним. Какая умная и вежливая программа у нас получилась.

Здороваемся с вашим котом (Java)

Переходим в класс MainActivity и добавляем новую переменную рядом с переменной mHelloTextView:

Свяжем созданную переменную с компонентом в методе onCreate():

Поменяем код для щелчка кнопки.

Мы внесли небольшую проверку. Если в текстовом поле пустой текст, то длина текста составляет ноль символов, и мы по-прежнему выводим надпись «Hello Kitty!». Если пользователь введёт имя своего кота, то приложение поздоровается с ним.

Изучаем Java для разработки для Android: введение в Java

Shane Conder & Lauren Darcey

Shane Conder & Lauren Darcey Last updated Sep 13, 2010

В этой серии туториалов вы познакомитесь с Java, языком программирования, используемым для разработки приложений для Android. Наша цель — подготовить тех, кто уже знаком с одним языком программирования, таким как PHP или Objective-C, которые помогут в работе с Java и окунут вас в разработку приложений для Android. В этом уроке вы получите краткое введение в основы Java, включая объектно-ориентированное программирование, наследование и многое другое. Если вы новичок в Java или просто хотите разобраться в деталях, то этот курс для вас!

Давайте начнем

Что касается предпосылок, мы предположим, что вы понимаете, как программировать (возможно, на PHP, или Visual Basic или C ++), но вы не знакомы со спецификой программирования на языке Java. Мы не собираемся учить вас программировать; мы собираемся предоставить вам четкие примеры обычно используемых конструкций и принципов языка Java, указав на некоторые советы и трюки касательно Android.

Что вам понадобится

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

Для разработки приложений для Android (или любых приложений Java, если на то пошло) вам нужна среда разработки для написания и сборки приложений. Eclipse — очень популярная среда разработки (IDE) для Java и предпочтительная среда разработки для Android. Она доступна для операционных систем Windows, Mac и Linux.

Полные инструкции по установке Eclipse (включая поддерживаемые версии) и Android SDK см. На веб-сайте разработчика Android.

Что такое Java?

Приложения для Android разрабатываются с использованием языка Java. На данный момент это действительно ваш единственный вариант для нативных приложений. Java — очень популярный язык программирования, разработанный Sun Microsystems (теперь принадлежащий Oracle). Разработанные намного позже после C и C ++, Java включает в себя многие из мощных функций этих мощных языков программирования и устраняет некоторые из их недостатков. Тем не менее, языки программирования настолько же сильны, как и их библиотеки. Эти библиотеки существуют, чтобы помочь разработчикам создавать приложения.

Некоторые из основных основных функций Java:

  • Его легко изучить и понять
  • Он разработан, чтобы быть независимым от платформы и безопасным, так как использует
    виртуальные машины.
  • Он является объектно-ориентированным

Android сильно зависит от этих основополагающих принципов Java. Android SDK включает в себя множество стандартных Java-библиотек (библиотеки структуры данных, математические библиотеки, графические библиотеки, сетевые библиотеки и все остальное, что вам может понадобиться), а также специальные библиотеки Android, которые помогут вам разработать потрясающие приложения для Android.

Почему Java легко изучить?

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

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

Наконец, Java является одним из самых читаемых человеком языков, под которым мы подразумеваем, что человек, который ничего не знает о программировании, может часто смотреть на некоторый Java-код и по крайней мере подозревать, что он делает. Рассмотрим следующий пример:

Если вы просто прочитаете код вслух, вы можете в значительной степени сказать, что этот фрагмент кода работает. Существует одна переменная, называемая символом. Если переменная символа равна букве a, мы сделаем что-то (вызовем метод doSomething (), или в другом случае (вызывая метод doSomethingElse ().

Почему важна независимость платформы?

Со многими языками программирования вам нужно использовать компилятор, чтобы уменьшить код на машинный язык, который может понять устройство. Хотя это хорошо, разные устройства используют разные машинные языки. Это означает, что вам нужно скомпилировать ваши приложения для каждого другого устройства или машинного языка, другими словами, ваш код не очень портативен. Это не относится к Java. Компиляторы Java преобразуют ваш код из человеческих читаемых исходных файлов Java в так называемый «байт-код» в мире Java. Они интерпретируются виртуальной машиной Java, которая работает так же, как физический процессор взаимодействует с машинным кодом, чтобы выполнить скомпилированный код. Хотя может показаться, что это неэффективно, было сделано много усилий, чтобы этот процесс был очень быстрым и эффективный. Эти усилия окупились в том, что производительность Java, как правило, уступает только C/C++ в общих сравнениях производительности языка.

Приложения Android запускаются на специальной виртуальной машине под названием Dalvik VM. Хотя сведения об этой виртуальной машине не важны для среднего разработчика, может быть полезно подумать о VM Dalvik как о пузыре, в котором работает ваше приложение для Android, позволяя вам не беспокоиться о том, является ли устройство Motorola Droid, HTC Evo, или новейший тостер под управлением Android. Вам все равно, пока устройство Dalvik VM дружелюбное, и это задача производителя устройства, а не ваша.

Почему Java безопасен?

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

Компиляция кода

Как и многие языки, Java по-прежнему является скомпилированным языком, хотя он не компилирует весь путь до машинного кода. Это означает, что вы, разработчик, должны скомпилировать ваши проекты Android и упаковать их для развертывания на устройства. Среда разработки Eclipse (используемая с плагином для разработки Android) делает это довольно безболезненным процессом. В Eclipse автоматическая компиляция часто включается по умолчанию. Это означает, что каждый раз, когда вы сохраняете файл проекта, Eclipse перекомпилирует изменения для вашего пакета приложений. Вы сразу видите ошибки компиляции. Eclipse также интерпретирует Java по мере ввода, обеспечивая удобную окраску и форматирование кода, а также показывающие многие типы ошибок, когда вы идете. Часто вы можете щелкнуть по ошибке, и Eclipse автоматически исправит опечатку или добавит оператор импорта или предоставит вам заглушку для метода, сохраняя множество ввода.

Вы можете вручную скомпилировать свой код, если хотите. В Eclipse вы найдете настройки сборки в меню проекта. Если вы включили «Build Automatically», вы все равно можете выбрать опцию «Clean . », которая позволит вам полностью перестроить все файлы. Если «Build Automatically» отключено, включены опции «Build All» и «Build Project». «Build All» означает создание всех проектов в рабочей области. У вас может быть много проектов в рабочем пространстве Eclipse.

Процесс сборки для обычных проектов Java приводит к созданию файла с расширением JAR — Java ARchive. Приложения Android берут файлы JAR и упаковывают их для развертывания на устройствах как файлы Android PacKage с расширением .apk. Эти форматы включают не только ваш скомпилированный Java-код, но и любые другие ресурсы, такие как строки, изображения или звуковые файлы, которые требуется выполнить вашему приложению, а также файл манифеста приложения, AndroidManifest.xml. Файл манифеста Android является файлом, требуемым всеми приложениями Android, которые вы используете для определения сведений о конфигурации вашего приложения.

Что такое объектно-ориентированный язык программирования?

Отлично. Время для очень короткого и 20 000-футового просмотра объектно-ориентированного программирования (ООП). ООП — это стиль или техника программирования, которые основаны на определении структур данных, называемых объектами. Для тех, кто новичок в ООП, объект можно воспринимать так же, как пользовательский тип данных. Например, у вас может быть объект Dog, который представляет собой чертёж общей собаки, с именем, породой и полом. Затем вы можете создавать разные экземпляры объекта Dog для представления конкретных собак. Каждый объект Dog должен быть создан путем вызова его конструктора (метода, который имеет то же имя, что и сам объект, и может иметь или не иметь параметров для установки начальных значений). Например, следующие объекты Dog используют конструктор с тремя параметрами (имя, порода, пол):

Итак, где этот объект Dog определен? Ну, здесь нам нужно начать определение некоторых фундаментальных строительных блоков языка программирования Java. Класс предоставляет определение для объекта. Таким образом, есть класс Dog где-нибудь, определенный вами или в какой-то библиотеке где-нибудь. Вообще говоря, класс будет определен в собственном файле с именем файла, соответствующим имени класса (например, Dog.java). Существуют исключения из этого правила, такие как классы, определенные в других классах (когда класс объявляется внутри класса, он обычно определяется для использования в родительском классе только как вспомогательный класс и называется внутренним классом).

Если вы хотите ссылаться на объект из другого класса, вам нужно включить оператор импорта в начало вашего файла класса, так же, как вы бы использовали оператор #include на компилированном языке, таком как C.

Класс обычно описывает данные и поведение объекта. Поведение определяется с помощью методов класса. Метод является общим термином для подпрограммы на языке ООП. Многие общие классы объектов определены в библиотеках общих классов, таких как комплекты разработки программного обеспечения (SDK), тогда как другие определяются вами, разработчиком, в ваших собственных целях. Затем программное обеспечение создается с использованием и манипулированием экземплярами объектов по-разному.

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

  • Википедия имеет хороший обзор ООП
  • Sun Java Tutorials на Java
  • Учебники Java в Oracle

Примечание. В этом уроке мы используем много разных терминов. Существует несколько способов ссылаться на данную концепцию (например, суперкласс по сравнению с родительским классом), что сбивает с толку тех, кто новичок в объектно-ориентированном программировании. Различные разработчики используют разные термины, и поэтому мы старались упоминать синонимы там, где это необходимо. Решение о том, какие условия вы будете использовать, является личным выбором.

Понимание наследования

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

Эта концепция лучше всего иллюстрируется примером. Давайте притворимся, что мы разрабатываем Java-приложение для имитации аквариума. В этом аквариуме есть рыба. Поэтому мы могли бы определить класс для представления рыбы. Этот класс, называемый Fish, может включать в себя некоторые поля данных (также называемые атрибутами или переменными-членами класса) для описания объекта рыбы: вида, цвета и размера; а также некоторые его поведение в виде методов (также называемых подпрограммами или функциями в процедурных языках), таких как eat (), sleep () и makeBabyFish ().

Для создания и инициализации объекта используется специальный тип метода, называемый конструктором; конструкторы называются такими же, как и их класс, имогут включать в себя параметры. Следующий класс Fish имеет два конструктора: один для создания общего объекта Fish, а другой для конструирования определенного объекта Fish с некоторыми исходными данными. Вы также увидите, что у класса Fish есть два метода eat (): один для приема чего-то случайного, а другой — для еды другой рыбы, который будет представлен другим экземпляром класса Fish:

Классы могут быть организованы в иерархии, где производный класс (или подкласс) включает все функции его родительского класса (orsuperclass), но уточняет и добавляет к ним, чтобы определить более конкретный объект, используя ключевое слово extends. Это называется наследованием.

Например, класс Fish может иметь два подкласса: FreshwaterFish и SaltwaterFish. Эти подклассы будут иметь все функции класса Fish, но могут дополнительно настроить объекты с помощью новых атрибутов и поведения или модифицированного поведения из родительского класса Fish. Например, класс FreshwaterFish может включать информацию о типе пресноводной среды, в которой они жили (например, река, озеро, пруд или лужа). Аналогично, класс SaltwaterFish может настроить метод makeBabyFish() таким образом, чтобы рыба ест своего партнера после размножения (как определено в суперклассе), используя механизм переопределения, например:

Организация поведения объекта с интерфейсами

В Java вы можете организовать поведение объектов в так называемых интерфейсах. Хотя класс определяет объект, интерфейс определяет некоторое поведение, которое может быть применено к объекту. Например, мы можем определить интерфейс Swimmer, который предоставляет набор методов, которые являются общими для всех объектов, которые могут плавать, будь то рыба, выдры или погружные андроиды. Интерфейс Swimmer может указывать четыре метода: startSwimming(), stopSwimming(), dive() и surface().

Затем класс, подобный Fish, может реализовать интерфейс Swimmer (с использованием ключевого слова реализует) и обеспечить реализацию поведения плавания:

Организация классов и интерфейсов с пакетами

Затем иерархии классов, такие как наши классы рыбы, могут быть организованы в пакеты. Пакет — это просто набор классов и интерфейсов, объединенных вместе. Разработчики используют пространства имен для уникального имени пакетов. Например, мы могли бы использовать com.mamlambo.aquarium или om.ourclient.project.subproject в качестве нашего имени пакета, чтобы отслеживать наши классы, связанные с рыбой.

Заключение

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

Вы только поцарапали поверхность Java-разработки для разработки Android. Ознакомьтесь со всеми другими замечательными учебниками на Mobiletuts +, чтобы погрузиться глубже в разработку Java и Android. Удачи!

Создание приложений для Android — старт для начинающих

Разработка мобильного программного обеспечения может стать интересным и полезным занятием. В этой статье мы расскажем, как создать приложение для Android .

Android Studio — создание приложения

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

Но сначала нужно загрузить и установить Java Development Kit ( JDK ) от Oracle . Найдите раздел « Java SE Development Kit 7u79 » и загрузите версию для своего ПК. Важно загрузить правильную версию ( 32-разрядную или 64-разрядную ), иначе Android Studio не сможет найти Java Runtime Environment ( JRE ).

Примечание: Oracle не будет публиковать на своих общедоступных сайтах какие-либо обновления Java SE 7 , и предполагается, что пользователи массово перейдут на Java 8 . Но в настоящий момент Android Studio требует наличия Java 7 . Это может измениться в будущем.

После того, как вы установили JDK , нужно инсталлировать Android Studio . Во время установки необходимо указать, сколько памяти зарезервировать для эмулятора Android . Он запускает Android в виде виртуальной машины, как смартфон с процессором Intel . Это быстрее, чем эмуляция процессора ARM на ПК. Но для запуска этой виртуальной машины эмулятор должен выделить некоторый объем памяти. Но перед тем как создать приложение для Андроид самому, имейте в виду, что сочетание Android Studio , Java и эмулятора будет довольно ресурсоемким, и компьютер может подтормаживать.

Google говорит, что необходимо как минимум 2 ГБ оперативной памяти, а рекомендуется 4 ГБ. Но мой основной ПК имеет 8 ГБ, и все равно иногда тормозит:

Android Studio - создание приложения

При первом запуске Android Studio выполнит первичную инициализацию, включающую в себя загрузку и установку актуальной версии Android SDK . Это может занять несколько минут.

Когда все будет загружено и установлено, вы увидите меню, которое позволит создать новый, открыть существующий или импортировать проект и т. д.

Разработка приложений для Android — cоздаем новый проект

Нажмите « Start a new Android Studio project » и введите название своего приложения в поле « Application name ». В поле « Company Domain » введите официальный домен вашей компании. Если вы независимый разработчик или любитель, введите собственный домен. Если вы просто экспериментируете с Android и не собираетесь в ближайшее время публиковать свои приложения в Google Play , просто оставьте пример домена, только измените « user » на ваше имя ( без пробелов ):

Разработка приложений для Android - cоздаем новый проект

В следующем диалоговом окне проверьте, чтобы у вас выбрана опция « Phone and Tablet », а для « Minimum SDK » установлено — API 15: Android 4.0.3. Для опций « Wear » и « TV » флажки не должны быть установлены.

В диалоговом окне « Add an activity to Mobile » оставьте значение по умолчанию « Blank Activity » и нажмите « Next ». В диалоговом окне « Customize the Activity » оставьте все значения и нажмите « Finish »:

Разработка приложений для Android - cоздаем новый проект - 2

Интегрированная среда разработки ( IDE ) запущена. Это может занять несколько минут ( особенно, если вы впервые создали проект ). Если при запуске IDE увидите сообщение об ошибке « Rendering Problems: Rendering failed with known bug », нажмите ссылку « rebuild », которая отображается рядом с сообщением об ошибке.

По умолчанию, рабочее пространство среды IDE делится на три основные части ( не считая панели инструментов и т. д. ). Слева сверху находится дерево проекта. Справа от него — редактор кода, а под ними сообщения.

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

Как сделать приложение для андроид — дерево проекта

Дерево проекта содержит все файлы и ресурсы, необходимые для создания Android-приложения . Если вы знакомы с написанием простых программ на Java , C , Python и т. д., то могли бы подумать, что все будет содержаться только в одном или двух файлах. Но разработка Android-приложений немного сложнее:

Как сделать приложение для андроид - дерево проекта

В узле « app » дерева проектов содержится несколько узлов ( например, папки ), которые можно развернуть. Узлами верхнего уровня являются “ manifests ”, “ java ” и “ res ”. Последний — это сокращение от “ resources ”.

В “ manifests ” располагается файл « AndroidManifest.xml », каждое приложение должно содержать его. Это XML-файл с информацией о приложении, включая его название. Часто добавляемым в этот файл элементом является список разрешений, необходимых для приложения. Для этого простого приложения не нужно здесь ничего менять.

В разделе « java » располагается Java-код приложения. Он будет находиться в подкаталоге, с именем com.example.user.myfirstapp . Это имя домена компании, которое вы ввели ранее, только наоборот, плюс название приложения. В этой папке находится файл MainActivity.java . Это точка входа в приложение и единственный файл Java , который нам понадобится.

Продолжаем создавать простое приложение для Андроид . В разделе « res » есть несколько папок для графики, меню и элементов пользовательского интерфейса. Нас интересуют « layout » и « values ». В папке « layout » находится файл под названием « activity_main.xml ». Это XML-файл , описывающий пользовательский интерфейс. Редактировать его можно двумя способами. Первый — непосредственное редактирование XML-кода , второй — использование встроенного дизайнера пользовательского интерфейса:

Как сделать приложение для андроид - дерево проекта - 2

В папке « values » содержатся несколько XML-файлов . В данный момент наиболее важным для нас является strings.xml . Вместо того чтобы задавать в Java-коде строковые значения их принято помещать в файл « strings.xml », и мы можем ссылаться на них через идентификаторы. Преимущество заключается в том, что если строка используется несколько раз, ее можно изменить только один раз, и изменения вступят в силу во всех местах. Это также упрощает поддержку нескольких языков в приложении.

Чтобы создать приложение для Андроид самому, нужно будет изменить файлы MainActivity.java , activity_main.xml и strings.xml .

Как сделать свое приложение для Android — написание приложения

Для нашего примера мы добавим кнопку с меткой « Tap Me! », изменим приветствие по умолчанию « Hello world! » на « Tap me if you dare! ». А также поменяем его, чтобы оно находилась в центре. И добавим код, чтобы при нажатии кнопки отображался текст « toast »!

Начнем с изменения текста приветствия и его выравнивания. Сначала найдите в дереве проекта файл « activity_main.xml » и дважды кликните по нему. Помните, что « activity_main.xml » — это файл, который содержит определение пользовательского интерфейса. В нижней части окна кода есть две вкладки: « Design » и « Text ». Перейдите на вкладку « Design ».

Теперь нажмите на текст « Hello world! », который показан в окне предварительного просмотра экрана смартфона. Если он слишком мал, используйте кнопку масштабирования ( лупа со значком «плюс» ).

В окне свойств, расположенном справа от изображения телефона, прокрутите экран вниз до тех пор, пока не найдете надпись « layout: centerInParent ». Кликните по пробелу рядом с ней и выберите « horizontal ». После этого текст « Hello world! » переместится в центр:

Как сделать свое приложение для Android - написание приложения

Перед тем, как создать приложение для Android без навыков, изменим текст. Строка « Hello world! » хранится в файле « strings.xml » в разделе res-> values . Если вы дважды кликните по этому файлу, то увидите несколько строк XML , которые определяют строки, используемые приложением.

Найдите эту строку:

И измените ее на:

Мы изменили выравнивание приветствия и его текст. Теперь добавим кнопку. Вернитесь на вкладку « Design » файла « activity_main.xml », найдите в списке « Palette » слева от изображения смартфона пункт « Button » и нажмите на него. Теперь кликните где-нибудь под надписью « Tap me if you dare! ».

Дважды кликните по кнопке, чтобы изменить ее текст. В конце поля “ text: ” расположена кнопка с тремя точками, нажмите на нее. В окне « Resources » нажмите « New Resource », а затем « New String Value… ». В поле « Resource name: » введите « tapme », а в поле « Resource value: » — “ Tap me! ”. Затем нажмите « ОК ». Теперь у нас есть кнопка “ Tap me! ”.

Последний шаг создания простого приложения для Андроид — добавить Java-код , который реагирует на нажатие кнопки. Один из элементов пользовательского интерфейса Android — это “ toast. ”. Он предоставляет простое сообщение в небольшом всплывающем окне. Вы, несомненно, видели это. Например, в Gmail при выходе из электронной почты до отправки письма выводится сообщение « Сообщение сохранено в черновики ». Спустя определенное время оно исчезает.

Для нашего примера приложения мы будем отображать сообщение каждый раз, когда нажимается кнопка. Первым шагом является добавление Java-кода . Найдите файл » MainActivity.java » и добавьте следующий код в » onCreate «:

Слово « View » во фразе «( View v )» будет красным, рядом с ним отображается сообщение, что вы использовали новую конструкцию ( View ), не импортируя ее в разделе импорта, в верхней части Java-кода . Это легко исправить. Нажмите на слово « View », а затем ALT + ENTER . Если слово “ Toast ” отмечено красным цветом, проделайте то же самое еще раз:

Как сделать свое приложение для Android - написание приложения - 2

Вернитесь в раздел конструктора файла « activity_main.xml », нажмите кнопку и прокрутите список свойств до пункта « onClick ». Нажмите на поле справа, и на экране появится список функций. Кликните по « onButtonTap », это функция, которую мы только что добавили.

Теперь функция onButtonTap() будет вызываться всякий раз, когда будет нажиматься кнопка. Чтобы вывести сообщение, мы вызываем myToast.show() .

Вот и все, что касается создания приложения для Андроид самому, теперь протестируем его в эмуляторе.

Создание приложения для андроид — построение и тестирование

В меню « Tools » перейдите к Android- AVD Manager . Этот инструмент отображает список текущих настроенных виртуальных Android-устройств . У вас будет одно устройство, настроенное по умолчанию, возможно, Nexus 5 . Нажмите на значок воспроизведения ( треугольник ) в столбце « actions ». Это запустит эмулятор.

В зависимости от производительности вашего ПК и объема выделенной памяти запуск эмулятора может занять несколько минут. После того, как эмулятор будет запущен, перейдите в меню « Tools » и нажмите « Run ‘app ». Приложение будет скомпилировано и отправлено в эмулятор. Во время этого Android Studio спросит вас, какой эмулятор использовать. Вы увидите в списке свой текущий эмулятор. Это должна быть опция по умолчанию, поэтому просто нажмите « OK »:

Создание приложения для андроид - построение и тестирование

Приложение появится в эмуляторе. Нажмите кнопку “ Tap me! ” — в нижней части экрана должно появиться сообщение. Поздравляю, все работает!

Что делать дальше и заключение

Также можно запустить приложение на реальном устройстве. Самый простой способ сделать это — включить USB-отладку на Android -устройстве и подключить его к компьютеру. Опцию отладки по USB можно найти в разделе Настройки – Для разработчиков . Если у вас нет этого раздела, откройте « Настройки » — « О телефоне », а затем нажмите « Номер сборки » семь раз.

Когда устройство будет подключено, нажмите « Run ‘app » в меню « Tools », но на этот раз не отправляйте приложение на виртуальное устройство, а отправьте на реальное устройство. Если устройство отсутствует в списке, это означает, что вы не включили отладку по USB или необходимо установить соответствующий USB-драйвер . Смотрите разделы USB-драйверы OEM и USB-драйвера Google в документации Google.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *