Как сделать новое окно в андроид студио

Обновлено: 15.05.2024

Урок 3. Создание AVD. Первое приложение. Структура Android-проекта.

Для того, чтобы тестировать приложения, нам понадобится Android Virtual Device (AVD). Это эмулятор Android-смартфона, на который мы сможем устанавливать созданные нами приложения, и запускать их там. Давайте его создадим.

Урок обновлен 04.06.2017

На прошлом уроке мы установили среду разработки и Android SDK.

Теперь наконец-то мы можем создать наше первое приложение и посмотреть, как оно работает.

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

Т.е. в самом простом случае структура проекта такова:

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

В этом случае: один проект = одно Android-приложение (один модуль).

Но в одном проекте может быть несколько модулей. Да и проектов можно создать несколько.


Здесь в первом проекте созданы два модуля, а во втором проекте – три модуля.

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

Т.е. в этом случае: один проект = несколько Android-приложений (несколько модулей).

Пока не будем вдаваться в детали, какая из предложенных схем лучше и удобнее. Для прохождения уроков можно создать один проект, и в нем создавать модули для каждого урока. Либо можно создавать отдельный проект, например, на каждые 10 уроков. Можно вообще создавать отдельный проект на каждый урок.

Я думаю, что мы начнем с варианта: один проект под все уроки. А со временем, как освоитесь, сами решите, какой вариант вам удобнее.

Давайте создадим проект. Открываем Android Studio. Ярлык для запуска должен быть в меню пуск. Либо вы можете открыть папку, куда устанавливали Android Studio на прошлом уроке. В подпапке bin должен быть EXE-файл.


Открылась среда разработки. Жмем Start a new Android Studio project.


Появилось окно создания проекта. Давайте заполнять.


Application name – имя проекта. Оно будет отображаться в списке проектов при открытии Android Studio. Напишем здесь Android lessons (т.е. Android уроки).

Package name – это понятие из Java, подробно можно посмотреть здесь. Вкратце – это префикс для имени классов нашего приложения. Как видите, пакет автоматически составился из имени сайта и имени проекта. Его всегда можно отредактировать вручную нажав на ссылку edit справа.

Project location – папка на компе, где будут находиться все файлы проекта. Мы на прошлом уроке создавали папку android, куда установили Android Studio и SDK. Там же создайте папку AndroidStudioProjects – в этой папке будем хранить все проекты Android Studio. И в ней создайте папку Androidlessons для нашего текущего проекта.

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

Визард спрашивает под какую платформу будем кодить и Minimum SDK (минимальная версия Android, на которой можно будет запустить приложение). Оставляем все как есть.


Визард может подгрузить необходимые ему компоненты.


Далее выберите Empty Activity.


Здесь ничего не меняем. Пока что нам нет необходимости знать, зачем все это нужно.


Жмем Finish.


Далее открывается студия. После открытия, она может показывать подсказки.


Если они вам не нужны, выключайте чекбокс.

Жмем Close.


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

И в итоге проект открывается


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

В левой части мы видим слово app – это модуль. По умолчанию при создании проекта создается модуль app. Нам он не интересен, т.к. мы будем создавать свои модули. Но пусть он остается, удалять его я вам не советую. Тот визард, который мы только что прошли при создании проекта, в основном касался как раз этого модуля.

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

Чтобы создать модуль – в меню выбираем File -> New -> New module

Тип модуля выбираем Phone and Tablet Application



Application/Library name – непосредственно имя приложения, которое будет отображаться в списке приложений в смартфоне. Пишем тут FirstProject.

Module name – это название модуля. Т.е. это название будет отображаться слева в списке модулей, там, где сейчас есть app. Давайте придумаем шаблон для названия модулей.

Например: p<номер урока(000)><номер проекта в уроке(0)>.

На номер урока выделим три цифры, на номер проекта – одну. Также, будем добавлять название приложения - FirstProject. И все это напишем маленькими буквами и без пробелов. Получится такое имя модуля: p0031firstproject.

Package name – имя пакета отредактируем вручную, нажав edit справа. Оставим там ru.startandroid и добавим точку и имя модуля.

Minimum SDK оставляйте без изменений.

Далее выберите Empty Activity.


Здесь ничего не меняем


Жмем Finish и ждем.

Через какое-то время модуль будет создан и мы увидим его в списке слева. Это p0031firstproject - значение, которое мы указали в поле Module name.


Можно раскрыть этот модуль и посмотреть его содержимое.

Вкратце пройдемся по интересующим нас элементам

Файл AndroidManifest.xml – манифест или конфиг-файл приложения

В папке java и ее подпапках будет весь, написанный нами, код приложения

Папка res используется для файлов-ресурсов различного типа.

Все это мы будем в дальнейшем использовать, и станет понятнее, что и зачем нужно.

Давайте наконец-то запустим наше первое приложение! Для этого надо выбрать соответствующий ему модуль в выпадающем списке сверху


И жмем (чуть правее списка) кнопку с зеленым треугольником (либо комбинацию Shift+F10).

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


У нас пока не на чем запускать приложение. Можете подключить шнуром реальное устройство, и оно здесь появится (если не возникнет проблем с драйверами или настройками устройства).

Либо можно создать эмулятор. Жмем Create New Virtual Device


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

Жмем Next

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


В данном случае на эмулятор будет установлен Android версии 7.1.1. Если вам нужна другая версия, то загружайте ее и используйте.

Далее нам предлагают указать название эмулятора и поменять его настройки. Оставляем все как есть


Жмем Finish

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


Жмем Ok

Через какое-то время (вплоть до нескольких минут) появится эмулятор


И в нем начнет запускаться Android


И в итоге запустится наше приложение


Название в заголовке - FirstProject. Именно его мы указывали при создании приложения.

Если эмулятор не показал ваше приложение, то убедитесь, что Android Studio "видит" этот эмулятор. Для этого снизу слева нажмите вкладку Android Monitor


И в списке устройств чуть выше должен быть виден эмулятор Nexus_5X_API_25

Если эмулятор есть в списке, а приложение не отобразилось, то попробуйте снова запустить приложение, нажав зеленый треугольник (Shift+F10).

Если эмулятора в списке нет, то закройте эмулятор и попробуйте снова запустить приложение.

Этот урок был обновлен в июне 2017. А многие последующие уроки были написаны аж в 2011-2012. Поэтому скриншоты в них могут отличаться от ваших. Это нормально.

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

Если у вас открыт проект и вы хотите снова увидеть стартовое окно Android Studio, в меню выберите File > Close Project.

Вы увидите стартовое окно, слева будет список ваших проектов.

Если у вас имя пользователя русскими буквами, то могут возникнуть проблемы. Как их решить, можно прочесть на форуме в ветке этого урока.

Если строка выше не помогла, то попробуйте еще такое решение.

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

- в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

- ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

- новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Урок 5. Kotlin. Добавление второго экрана в android-приложение. Передача данных через Intent

Продолжаем курс по обучению основам разработки мобильных приложений в Android Studio на языке Kotlin.

В этом уроке создадим второй экран в приложении, и настроим взаимодействие между экранами с передачей данных.

Предыдущий урок, в котором мы обрабатывали нажатия кнопок, здесь

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

Содержание

Вы узнаете

  • Как запустить новое активити с помощью интента
  • Как передать данные во второе активити через интент
  • Как получить данные, переданные через интент во втором активити

Создаем новое активити


  1. Раскройте пакет с именем com.example.android.myfirstapp по пути apps > java > com.example.android.myfirstapp.
  2. Правым кликом выберите команду File > New > Activity > Empty Activity.
  3. В окне настроек нового активити установите для него имя SecondActivity. Убедитесь, что в поле Source Language установлен Kotlin.

4. Нажмите Finish. Android Studio создаст файл на языке Kotlin и файл макета на языке XML для нового активити.

Изучите файл манифеста


  1. Откройте файл манифеста приложения по пути app > manifests > AndroidManifest.xml.Файл манифеста содержит информацию о приложении, включая список всех активити.
  2. Обратите внимание на текст между тегами <activity> для MainActivity:Как видите, тег <activity> содержит параметр имени активити. MainActivity запускается после при старте приложения, поэтому включает дополнительные параметры, которые определяют его как стартовое активити.
  3. Изучите тег <activity> для второго активити. Он содержит только параметр имени.

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

Как сделать новое окно в андроид студио

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

Создаем новый проект в Andoid Studio, все названия традиционно оставляем по умолчанию. Итак, сейчас мы имеем всего одно Activity - MainActivity, 1 файл разметки интерфейса activity_ main .xml, описывающий наше MainActivity . Создадим еще одно Activity . Слева, в окне, отображающем структуру приложения, выделяем папку приложения app --- New --- Java Class:

Новый класс

Папка назначения

В следующем окне вводим имя создаваемой активности: SecondActivity и жмем ОК. Слева в панели сразу откроется папка, где создано новое Activity, проследите, чтобы обе активности были в одной папке. Если у вас вышло вот так:

Перенос активности

то просто перетащите файл SecondActivity в папку с MainActivity.

Теперь нужно создать файл разметки для SecondActivity. Делаем это аналогично созданию активности: в окне слева раскрываем папку res и нажимаем правой кнопкой мыши на подпапку layout: жмем New --- Layout resourse file. В открывшемся окне вводим имя: second и жмем ОК. Все, все необходимые файлы созданы.

Теперь нужно привязать созданный файл разметки интерфейса second.xml к SecondActivity. Открываем SecondActivity и выполняем эту привязку:

Как видите, здесь ничего сложного. Устанавливаем наследование нашим новым классом extends Activity, создаем метод onCreate. Чтобы не писать его вручную, делаем так: на верхней панели ищем кнопку Code --- Override Methods, начинаем вводить название OnCreate, подсказка нам его быстренько выдаст, и жмем ОК. Настраиваем вид контента окна с нашего файла second.xml: setContentView(R.layout.second).

Теперь начнем реализацию нашей мечты: при нажатии на кнопку на одном экране - происходит переход на другой экран с другим содержимым.

Открываем файл activity_main.xml и создаем там кнопку, при нажатии на которую будет происходить переход:

Теперь нужно описать процесс нажатия, кликнем на надпись "Click" в последней строчке и нажмем комбинацию клавиш Alt + Enter:

Описываем нажатие

и жмем еще раз Enter по строчке "Create "Click(View)" in "MainActirvity"". Таким образом мы автоматически добавили метод обработки щелчка в MainActivity.

Теперь в созданном методе " Click " нужно написать код, который будет производить переход при нажатии:

Перед тем, как приступить к тестированию нашего творения вспомним, что еще нужно зарегистрировать наш новый класс SecondActivity в файле манифеста приложения. Открываем файл AndroidManifest.xml и между тегами <application> </application> впихиваем это:

В принципе все. Давайте только заполним хоть каким то содержимым наш SecondActivity, чтобы переход был более очевидным.

Откроем созданный нами файл second.xml. Ну а тут свобода! Добавьте то, что сами желаете увидеть при переходе на эту активность. Например я добавлю туда элемент <TextView> с надписью "Приехали!" и размещу ее в центре:

Переход

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

После освоения этого урока сразу советую вам заглянуть сюда, а также сюда . Удачи!

Диалоговые окна в Android. Часть 1

Единственная заметка по поводу этого кода будет про использования метода setView(View view) в диалоге IDD_SETTINGS. У AlertDialog как и у всех остальных диалоговых окон есть одна приятная особенность — им можно задавать собственные Layout, что позволяет полностью видоизменять диалоговые окна и их содержимое. Здесь есть один подводный камень: обработку элементов этого Layout вы должны будете производить именно в той Activity, где вызываете это диалоговое окно. Например я показываю диалоговое окно IDD_SETTINGS в MainActivity с Layout по имени settings:

Соответственно я загружаю это окно в MainActivity:

Метод initSettings класса MainActivity в данном случае будет выглядеть так:

Ну а дальше обрабатываете свои объекты как вам угодно.

Небольшой итог

1) Для большинства целей диалоговых окон подходит AlertDialog
2) AlertDialog может принимать вид layout с любыми объектами
3) Гораздо лучше использовать для диалоговых окон отдельный класс и пользоваться AlertDialog.show()
4) Обработка объектов кастомного layout производится в активности, вызвавшей диалог

В следующей части этой статьи пойдет речь о DialogFragment, который был включен в Android SDK начиная с 3.0 Honeycomb. Надеюсь эта статья поможет новичкам и не очень в своих квестах по завоеванию Google Play.

Урок 21. Создание и вызов Activity

Мы подобрались к очень интересной теме. На всех предыдущих уроках мы создавали приложения, которые содержали только один экран (Activity). Но если вы пользуетесь смартфоном с Android, то вы замечали, что экранов в приложении обычно больше. Если рассмотреть, например, почтовое приложение, то в нем есть следующие экраны: список аккаунтов, список писем, просмотр письма, создание письма, настройки и т.д. Пришла и нам пора научиться создавать многоэкранные приложения.

Application/Library name: TwoActivity
Module name: p0211twoactivity
Package name: ru.startandroid.p0211twoactivity

Откроем activity_main.xml и создадим такой экран:

На экране одна кнопка, по нажатию которой будем вызывать второй экран.

Открываем MainActivity.java и пишем код:

Мы определили кнопку btnActTwo и присвоили ей Activity в качестве обработчика. Реализация метода onClick для кнопки пока заполнена частично - определяем, какая кнопка была нажата. Чуть позже здесь мы будем вызывать второй экран. Но сначала этот второй экран надо создать.

Если помните, при создании проекта у нас по умолчанию создается Activity.


От нас требуется только указать имя этого Activity – обычно мы пишем здесь MainActivity. Давайте разбираться, что при этом происходит.

Мы уже знаем, что создается одноименный класс MainActivity.java – который отвечает за поведение Activity. Но, кроме этого, Activity «регистрируется» в системе с помощью манифест-файла - AndroidManifest.xml.


Давайте откроем этот файл:

Нас интересует тег application. В нем мы видим тег activity с атрибутом name = MainActivity. В activity находится тег intent-filter с определенными параметрами. Пока мы не знаем что это и зачем, сейчас нам это не нужно. Забегая вперед, скажу, что android.intent.action.MAIN показывает системе, что Activity является основной и будет первой отображаться при запуске приложения. А android.intent.category.LAUNCHER означает, что приложение будет отображено в общем списке приложений Android.

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

Android Studio при создании модуля создала MainActivity и поместила в манифест данные о нем. Если мы надумаем сами создать новое Activity, то студия также предоставит нам визард, который автоматически добавит создаваемое Activity в манифест.

Давайте создадим новое Activity

Жмем правой кнопкой на package ru.startandroid.p0211twoactivity в папке проекта и выбираем New -> Activity -> Empty Activity


В появившемся окне вводим имя класса – ActivityTwo, и layout – activity_two.


Класс ActivityTwo создан.

В setContentView сразу указан layout-файл activty_two.

Он был создан визардом


Откройте activty_two.xml и заполните следующим кодом:

Экран будет отображать TextView с текстом "This is Activity Two".

Сохраните все. Класс ActivityTwo готов, при отображении он выведет на экран то, что мы настроили в layout-файле two.xml.

Давайте снова заглянем в файл манифеста

Появился тег activity с атрибутом name = .ActivityTwo. Этот тег совершенно пустой, без каких либо параметров и настроек. Но даже пустой, он необходим здесь.

Нам осталось вернуться в MainActivity.java и довершить реализацию метода onClick (нажатие кнопки), а именно - прописать вызов ActivityTwo. Открываем MainActivity.java и добавляем строки:

(добавляете только строки 2 и 3)

Обновите импорт, сохраните все и можем всю эту конструкцию запускать. При запуске появляется MainActivity


Нажимаем на кнопку и переходим на ActivityTwo


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

Пока попробуйте несколько раз пройти мысленно эту цепочку действий и усвоить, что для создания Activity необходимо создать класс (который наследует android.app.Activity) и создать соответствующую запись в манифест-файле.

На следующем уроке:

- разбираемся в коде урока 21
- теория по Intent и Intent Filter (не пропустите, тема очень важная)
- немного о Context

- в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

- ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

- новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Многооконный режим: дополнительное конкурентное преимущество для Android-приложений

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


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

Обзор

Одновременная работа с несколькими окнами в Android – это интересная функция, которая способна выделить ваше приложение из множества других, дать ему дополнительное конкурентное преимущество. Многие OEM и ODM-производители, такие, как Samsung, Ramos и Huawei, подвергают базовую систему Android доработке. В частности, они внедряют поддержку многооконного режима. Делают они это для того, чтобы повысить привлекательность своих смартфонов и планшетов, выделить их из основной массы устройств, которые подобную функцию не поддерживают.


Сценарии использования многооконного режима

Предварительные сведения

В июне 2012-го года был представлен Cornerstone – первая платформа с открытым исходным кодом для организации многозадачной работы на Android. В августе 2012-го Samsung выпустила первый аппарат, поддерживающий работу в многооконном режиме. Начиная с 2013-го года и по наши дни, можно наблюдать взрывной рост решений для поддержки одновременной работы с несколькими окнами в Android.

В мае 2015-го года вышла Android M Developer Preview (сегодня, в июле, доступна уже Preview 2). Официальный релиз Android M (6.0) ожидается осенью 2015-го года. Кроме прочих новшеств Android M Preview 2 примечателен тем, что поддерживает многооконный режим.



Развитие решений для поддержки многозадачности в Android

Существуют два подхода к работе с несколькими окнами: это использование плавающих (floating) и закрепленных (docked) окон. Среди основных возможностей работы в многооконных режимах можно отметить открытие и закрытие окон (open/close), изменение их размера (resize) и взаимного расположения (swap). Открывая или закрывая окно, мы, соответственно, включаем или выключаем многооконный режим. Функция изменения размера предусматривает настройку размеров окон. Смена расположения окон – это действие, которое позволяет поменять их местами.



Режимы работы с несколькими окнами

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

Продукт Cornerstone Standout Xposed Tieto
Описание
Фреймворк для организации многозадачной работы в ОС Android
Библиотека с открытым исходным кодом, которую можно использовать для создания приложений с плавающими окнами
Многооконное приложение, которое поддерживает закрепленные окна
Проект направлен на создание рабочей среды, напоминающей работу на настольном ПК
Поддержка открытия, закрытия окон, изменения размера, раскрытия на весь экран
Да
Да
Да
Да
Стиль окна
Закрепленное
Плавающее
Закрепленное
Закрепленное и плавающее
Модификация кода
На уровне платформы Android
На уровне приложения
На уровне платформы Android
На уровне платформы Android
Поддержка приложений
Поддерживаются все приложения, однако, не доступна динамическая настройка SurfaceView.
Некоторые вспомогательные приложения. Например – калькулятор.
Совместимость и стабильность решения нуждается в улучшении.
Поддерживает все приложения.
Версия Android
Android 4.1. – Android 4.4.
Android 4.1. – Android 4.4.
Android 4.4.
Android 4.4
Официальный сайт
Клик
Клик
Клик
Клик

Программная архитектура

Код платформы Android можно модифицировать для того, чтобы оснастить её поддержкой дополнительных возможностей. Архитектура ОС Android состоит из нескольких уровней.

В случае с Android 4.2 и Android 4.3., оболочка (launcher) и другие приложения при запуске размещаются в одном стеке, называемом «главный стек» («main stack»). Как известно, многооконный режим требует большего количества стеков для размещения в них нескольких окон. В результате, нужно модифицировать системный класс ActivityManagerService, добавив к нему интерфейс для создания стека и управления им. Для модификации класса платформы WIndowManagerService, который позволяет управлять графическими представлениями приложений, требуется изменить InputManager. Нужно это для того, чтобы он мог перенаправлять события касания соответствующим окнам.

С выходом Android 4.4 и Android 5.0 подход к управлению стеком значительно изменился. Оболочка и другие приложения могут запускаться в различных стеках. В систему была добавлена поддержка нескольких стеков и возможность управления ими. На рисунке ниже показаны отличия в работе со стеком в разных версиях Android.



Сравнение работы со стеком в Android 4.3 и Android 4.4

Теперь сосредоточимся на Android 5 (Lollipop). ОС Android использует механизмы обратного вызова для выполнения интерфейсных функций Activity. Однако управляющая функция реализована на уровне платформы. Поэтому сейчас мы рассмотрим два важных класса: ActivityManagerService и WindowManagerService.



Структура ПО платформы Lollipop

Управление Activity в Lollipop

Так как возможность работы в многооконном режиме зависит от стека, ниже показано, как можно создать стек и как можно запустить Activity в этом стеке. В Lollipop в интерфейс IactivityManager.java добавлены следующие функции:

Новые функции интерфейса IactivityManager.java Описание
public void moveTaskToStack(int taskId, int stackId, boolean toTop) Переместить задачу (task) в другой стек
public void resizeStack(int stackBoxId, Rect bounds)
Изменить размер стека
public void setFocusedStack(int stackId)
Установить фокус на выбранную задачу
Public Boolean isInHomeStack(int taskId)
Узнать, находится ли задача в HomeStack

После запуска процесс SystemServer вызывает службы управления Activity (activity manager services) и окнами (windows management services). Для того чтобы понаблюдать за этим процессом, мы можем добавить в соответствующие места команды вызова исключения времени выполнения (RuntimeException).



Процесс создания стека в Lollipop

Теперь посмотрим, как запустить Activity в стеке:



Запуск Activity в стеке

В Lollipop в утилиту ADB (Android Debug Bridge, отладочный мост Android) были добавлены следующие команды:

Команда ADB
Функция
Описание
Adb shell am stack start
Запускает новую Activity на <DISPLAY_ID>, используя Intent
В Kitkat 4.4 команды ADB содержат: adb shell am stack create
В Lollipop 5.0: adb shell am stack create deletion
Adb shell am stack movetask
Перемещает <TASK_ID> из текущего стека вверх или вниз стека <STACK_ID>
Использование: adb shell am stack movetask task_id stackid true/false
Примечание: в Kitkat это работает, а в Lollipop – нет
Adb shell am stack resize
Изменяет размер стека <STACK_ID> и его позицию на <LEFT, TOP, RIGHT, BOTTOM>
Использование: adb shell am stack resize task_id weight

Управление окнами в Lollipop

WindowManagerService – это центральная часть системы управления окнами. Его функциональность включает в себя диспетчеризацию событий ввода, управление расположением объектов на экране и поверхностями, на которых выводятся графические элементы.




Роль WindowsManagerService в графической архитектуре Android

Проблемы многооконного режима


При работе в многооконном режиме доступно изменение размеров окон. Известны примеры, когда размер окна, выводящего игровую анимацию, не может быть изменен. Основная причина этого заключается в том, что подсистема Android SurfaceFlinger не может динамически менять размер выводимого изображения.


Игры, использующие SurfaceFlinger, не могут динамически менять размер окна

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


Калькулятор с макетом, не рассчитанным на работу в многооконном режиме

Поддержка многооконного режима в Android M

Android M Developer Preview 2 можно запустить на Nexus 5, 6, 9 и Nexus Player. Если же подобного устройства у вас нет, или вы не хотите устанавливать на него ОС, находящуюся в статусе Preview, с Android M можно познакомиться с помощью эмулятора в Android Studio. В частности, сейчас нас интересуют стандартные средства для работы в многооконном режиме.

Для того чтобы увидеть этот режим в действии, достаточно создать новое виртуальное устройство с помощью средства AVD Manager, выбрав при этом в качестве системного образа один из доступных с API Level MNC. В нашем случае это был образ x86_64. Далее, надо запустить эмулятор, перейти в раздел настроек Для разработчика и включить там опцию Многооконный режим. Если такой опции найти не удаётся, взгляните на это руководство

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


Меню выбора макета расположения окон в многооконном режиме

Дальше всё вполне понятно. Выбираем нужный макет и наслаждаемся многооконным режимом:


Многооконный режим в Android M

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

Если же вы хотите оснастить свои приложения, рассчитанные на более ранние версии Android, поддержкой нескольких окон, самое время обратиться к решениям сторонних разработчиков, о которых речь шла выше. Например, к Cornerstone.

Пример: Cornerstone

Компания Onskreen создала Cornerstone – первый фреймворк, позволяющий работать с несколькими окнами на Android. Он рассчитан на устройства с большими экранами и планшеты. Исходный код можно загрузить на Github. Он поддерживает работу с Android версий 4.1 и 4.2. Для более поздних версий этой ОС Cornerstone пока не выпущен. Однако можно проанализировать исходный код для Android 4.2 для того, чтобы узнать технические подробности работы системы.



Модификации Cornerstone в Android Jelly Bean

Итоги

Во многих мобильных устройствах, работающих под управлением Android OS, используются процессоры Intel®. Как разработчики могут улучшить ощущения пользователей от работы с их приложениями? Как сделать приложения более конкурентоспособными? Эти вопросы ведут нас к постоянному улучшению продуктов на устройствах с архитектурой Intel Architecture (IA). Поддержка работы в многооконном режиме – это хороший пример полезной возможности, дающей приложениям конкурентные преимущества. Это удобно, многооконный режим даёт пользователю возможность выполнять несколько задач одновременно. Например – смотреть видео и писать друзьям отзыв о том, что смотрит. Например – играть в игру и читать её обзоры. Сегодня работу в многооконном режиме поддерживают несколько устройств. Например – это планшеты Ramos i12, Teclast x98 и Cube i7, который работает под управлением Remix OS.

Урок 17. Создание View-компонент в рабочем приложении

На прошлом уроке мы создавали компоненты в методе Activity.onCreate, т.е. при создании приложения. На этом уроке будем создавать уже в работающем приложении. Создавать будем Button-ы, т.к. они наглядней всего отображаются. Будем указывать текст, который будет отображен на кнопке и выравнивание: слева, по центру или справа. Также предусмотрим возможность удаления созданных элементов.

Project name: P0171_DynamicLayout2
Build Target: Android 2.3.3
Application name: DynamicLayout2
Package name: ru.startandroid.develop.dynamiclayout2
Create Activity: MainActivity

Создадим экран, который поможет нам создавать View-компоненты. Открываем main.xml и пишем там следующее:

Рассмотрим подробно экран.

rgGravity – это RadioGroup, с тремя RadioButton (rbLeft, rbCenter, rbRight). Этот компонент мы используем для выбора выравнивания создаваемого компонента
etName – текстовое поле, здесь будем указывать текст, который будет отображаться на созданном компоненте
btnCreate – кнопка, запускающая процесс создания.
btnClear – кнопка, стирающая все, что создали
llMain – вертикальный LinearLayout, в котором будут создаваться компоненты


Экран готов, давайте кодить реализацию. Открываем MainActivity.java. Начнем с того, что опишем и найдем все необходимые нам компоненты. Кстати, у нас есть пара кнопок, которые мы будем использовать, значит им нужен обработчик. В качестве обработчика назначим Activity (т.е. необходимо дописать: implements OnClickListener) и создадим пустой пока метод обработки onClick:

Я также создал переменную wrapContent и буду хранить в ней значение LinearLayout.LayoutParams.WRAP_CONTENT. Делаю это только для снижения громоздкости кода.

Теперь опишем процесс создания Button-компонента заполнив метод onClick:

Разберем написанное. Для начала мы проверяем, что была нажата кнопка btnCreate – т.е. кнопка создания. Затем создаем LayoutParams с высотой и шириной по содержанию. Здесь я использовал переменную, про которую писал выше – wrapContent. Иначе получилось бы довольно громоздко.

Далее создаем переменную btnGravity, в которую по умолчанию запишем значение выравнивания LEFT. Для определения, какой RadioButton выделен в данный момент, используем метод getCheckedRadioButtonId – он для RadioGroup возвращает ID «чекнутого» RadioButton-а. Мы его сравниваем с нашими тремя ID и заносим соответствующее значение в переменную btnGravity. Скидываем это значение в gravity у LayoutParams.

Далее создаем кнопку и присваиваем ей текст из etName. Обратите внимание, что недостаточно написать getText, т.к. это не даст текста. Необходимо еще вызвать метод toString. Ну и в конце добавляем созданный Button в наш LinearLayout.

Сохраним все и запустим приложение. Добавим несколько кнопок.


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

Осталось нереализованной кнопка Clear, которая призвана удалять все созданное. Для этого нам необходимо дополнить метод onClick, добавим в switch ( v.getId ()) еще один case:


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

На форуме задают вопрос: как потом получить доступ к этим созданным компонентам. Тут есть пара простых вариантов.

1) При создании вы можете сами присваивать компонентам ID. Это делается методом setId . И потом по этим ID просто вызываете findViewById.

2) Вы можете сохранять созданные компоненты в свой массив или список. Либо можете воспользоваться методом getChildAt. Вызов этого метода для llMain позволит получить его дочерние компоненты по индексу. Получить кол-во дочерних элементов позволит метод getChildCount.

Полный код урока:

На следующем уроке:

- изменяем layout-параметры для уже существующих компонентов экрана

- в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

- ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

- новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Установка и настройка Android Studio

В материале Вы узнаете, как производится установка и настройка Android Studio на операционных системах Windows 7 и 10 с подробным описанием имеющегося в программе функционала.

Установка Android Studio: инструкция для Windows

Установка Android Studio

Чтобы создавать приложения для Андроид стало проще, понятней и доступней — компания Гугл выпустила специальную программу "Android Studio". Краткий ответ на вопрос, что такое Android Studio, будет звучать так: это комплекс программных инструментов, который используется для разработки программного обеспечения. Эта IDE-среда нужна для создания приложений для устройств на платформе Андроид: часы, смартфоны, планшеты и т.д. Доступна для Windows, Linux, OS X.

Невозможна установка Android Studio без Java Development Kit (JDK). Не забудьте принять лицензионное соглашение.

Перед тем, как установить Android Studio, убедитесь, что ОС и ПК соответствуют следующим показателям:

  • объем оперативной памяти не менее 2 ГБ (желательно 8 ГБ);
  • на диске 2-4 ГБ свободного места;
  • разрешение экрана как минимум 1280*800 пикселей;
  • для ускорения работы эмулятора требуется ОС разрядностью 64 бита, процессор Intel, поддерживающий функции Intel VT-x, Intel 64, Execute.

Разработка Android ведется на Java, а т.к. JDK — это необходимый элемент для работы с Java, то загрузка JDK требуется и для Android. Затем загружаем Андроид Студио.

установка android studio

Для Windows 7, 8, 10

Программа будет скачана архивом. Перед тем, как установить Android Studio на Windows 7, 8 или 10, необходимо распаковать архив.

  1. После того, как распаковка закончена, находим ярлычок программы и кликаем на него. Появляется окошко с приветствием. Жмем на "next".
  2. В следующем окне предлагается выбрать тип настройки для Android Studio. Выбираем стандартную версию.
  3. Теперь предлагается выбрать тип дизайна страницы — темный или светлый. Выбираем, какой нравится больше и жмем "next".
  4. Следом проверить, не требуется ли вносить изменения в уже установленные программы. Для первой загрузки ничего менять не нужно, поэтому нажимаем "финиш".
  5. После проверок и уточнений запускается процесс загрузки программы.
  6. Следом идет процесс распаковки.
  7. Дожидаемся завершения действия, и нажимаем "финиш".

Открылся Welcome экран. Первый урок о том, как установить Андроид Студио на Виндовс 7, 8 или 10, закончен.

как установить android studio

Как использовать

В открытом виде доступны для выбора следующие действия: создать новый проект, открыть существующий и т.п. Внизу кнопки "Настройки" и "Помощь".

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

Работа с файлами проекта

В открытом окне видно меню, где предлагается выбрать действия с шрифтом и файлами.

Стоит указать разницу между обычным программированием и программированием на Андроид: здесь программа пишется не в одном файле. Здесь группа файлов, которые собираются в одну группу.

Программирование осуществляется при помощи файла xml, привязка действий для нее — файл java. В папке res хранятся дополнительные ресурсы (например, изображения), в папке values — файлы XML.

как установить android studio на windows 10

Работа с визуальным редактором XML

Чтобы XML функционировал, нужны файлы JAVA. Для этого открываем losst.ru и под строками "импорт" добавляем: import Android.webkit.WebView. В конец метода onCreate пишем:

Опция Gradle

Этот инструмент требуется для автоматизации сборки. С ним процесс превращения группы файлов в полноценный APK упрощается. Настройки опции расположены в файлах с аналогичным названием. Для исправления неисправности в работе системы нажимаем "build" и "clear project".

как установить андроид студио на виндовс 7

Отладка и сборка

Чтобы запустить приложение на устройстве Андроид — нужно разрешить устанавливать приложения из непроверенных источников и производить отладку через порт USB. После того, как смартфон соединен с ПК, нужно нажать "run" и "run app".

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

android studio sdk

ADV Manager

Одна из главных функций этого приложения — обеспечение загрузки проектов на мобильные носители. Для скачивания менеджера нажимаем "Tools", затем "Android" и "ADV Manager".

Порядок действий следующий:

  1. Выбираем "Create Virtual Device".
  2. Потом отмечаем устройство, подлежащее эмулированию.
  3. Требуется скачать прошивку и согласится с условиями лицензионного договора.

установка андроид студио

SDK Manager

Эта программа "дарит" проекту такие функции, как использование камеры, блютуз, и т.п. Найти ее можно в разделе "Tools".

Читайте также: