И так, допустим, что вы довольно долго разрабатывали свое приложение и хотите увидеть результаты. Нам необходимо запустить свое приложение. Для этого выделим его корневую папку и кликнем на кнопку Run.
Далее у нас появится следующее окно:
Нажимаем Ok. После этого появится окно, где вы можете выбрать на каком устройстве выполнить запуск. В верхнем листе записаны все реальные устройства подключенные к ПК и настроенные должным образом (включена отладка на устройстве), в нижнем листе – все виртуальные устройства, созданные вами. Вы можете выбрать любое и нажать на запуск.
Далее произойдет запуск на устройстве. Если вы выбрали виртуальную машину, то скорее всего вам придется подождать пока она включится, повторные запуске на виртуальных машинах будут производится намного быстрее, поэтому если вам требуется неоднократно запускать проект, не закрывайте окно виртуальной машины. Можно так же запустить один проект на нескольких устройствах, в том числе и на реальных, и виртуальных, для этого достаточно при каждом запуске выбирать разные варианты. Если вы выбрали устройство, на котором уже запущено приложение, то произойдет перезапуск.
Декларативный способ создания экранных элементов
Если проводить аналогию с Windows, то приложение состоит из окон, называемых Activity . В конкретный момент времени обычно отображается одно Activity и занимает весь экран, а приложение переключается между ними. В качестве примера можно рассмотреть почтовое приложение. В нем одно Activity – список писем, другое – просмотр письма, третье – настройки ящика. При работе вы перемещаетесь по ним.
Содержимое Activity формируется из различных компонентов, называемых View . Самые распространенные View – это кнопка, поле ввода, чекбокс и т. д.
Примерно это можно изобразить так:
Необходимо заметить, что View обычно размещаются в ViewGroup . Самый распространенный пример ViewGroup – это Layout . Layout бывает различных типов и отвечает за то, как будут расположены его дочерние View на экране (таблицей, строкой, столбцом и т.д.).
ViewGroup можно рассматривать как контейнер View элементов (дочерних), в этом контейнере элементы хранятся согласно поведению и структуре, который присущ данной ViewGroup. ViewGroup можно назвать родительским элементом, для View, которые хранятся в нем, а сами View – дочерними для этого ViewGroup.
И так нам интересен layout-файл, он располагается в папке res -> layout.
Открываем его и видим следующее:
Это макет нашего экрана, именно это увидит пользователь когда приложение запустит данный layout-файл. А так как этот слой отобразится первым, то соответственно это первое что увидит пользователь в вашем приложении. Стоит отметить что порядок отображения слоев должно регулироваться исполняемым кодом. То есть именно программист при создании приложения должен определять когда и при каких обстоятельствах отобразится данный слой.
Слева мы видим набор View-элементов укомплектованные в иерархии. Если мы перетащим какой-нибудь элемент на наш слой, то он автоматически добавится в наш layout-файл.
Справа в верхнем углу видим логическую структуру нашего слоя, давайте разберемся с этим подробнее. И так наш layout-файл имеет корневой слой RelativeLaoyt (один из видов слоев), в данном случаем слой является элементом ViewGroup. Стоит понимать разницу между layout-файлом (файлом разметки) и layout (слоем). Первое это наш экран, вторым можно назвать View-элемент, хотя это не совсем так, как было сказано layout (слой) – это элемент ViewGroup. Любой layout-файл имеет свой корневой слой, в этом слое хранятся дочерние элементы, согласно правилам этого слоя. При создании проекта у нас уже добавился автоматически дочерний View – TextView с надписью: «Hello world».
Читать дальше