Вы находитесь на странице: 1из 30

1

Содержание
1. Создание проекта 3-8

2. Что у нас есть в проекте 9-11

3. Запуск приложения 12-17

4. Выкладываем на гитхаб 18-25

5. Activity 26-29

◦ Жизненный цикл Activity

6. Полезные ссылки 30

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

3
◦ При запуске Android Studio должно появиться похожее окошко,
нажимаем Start a new Android Studio project.

◦ Вводим имя, можем указать домен и путь, куда положить проект


Нажимаем Next.

4
◦ Здесь можно выбрать минимальную версию Андроид, где будет
работать наша программа. 4.4 нас устраивает, на самом деле, мы
получим поддержку больше 90% устройств.

5
◦ Здесь выбираем из различных типов шаблонов проектов.
Нас устраивает Empty Activity.

6
◦ Здесь можно поменять название нашего Activity.
Ура, жмём Finish.

7
◦ Здесь можно поменять название нашего Activity.
Ура, жмём Finish.

8
2
Что у нас есть
в проекте

9
◦ Окошко слева открывается/закрывается нажатием Alt+1

Нам сгенерировали все важные файлы:

• AndroidManifest.xml — здесь мы будем прописывать все наши


Activity, наши permissions (что можно заходить в интернет), название
приложения и другую ключевую информацию;
• MainActivity.java — наше первое Activity;
• activity_main.xml — layout нашего первого экрана. Что-то типа html-
разметки интерфейса;
• В папочке mipmap лежат иконки, обычная и круглая (круглая
появилась в Android 7.0), причём иконки, как и все картинки в
Android, имеют несколько версий — для разных плотностей экрана;
• colors.xml, strings.xml, styles.xml — описаны все цвета, строки
и стили, используемые в приложении. Стили - это почти как CSS,
только гораздо меньше возможностей

10
• Чтобы создать новый файл, кликаем правой кнопкой по любой
папочке и выбираем new, или Ctrl+Shift+A и набираем new

• И можем выбрать тип файла, который хотим создать.

11
3
Запуск
приложения

12
• Нажимаем Shift+F10

• Список подключенных устройств или эмуляторов. Если ничего нет,


нажимаем Create New Virtual Device. Ставим галку снизу, чтобы нам
не показывали это окошко при следующих запусках.

13
• Варианты устройств. Nexus 5X годится.

14
• Выбираем ОС.
Лучше из вкладки x86 Images — работают быстрее.
Если ничего нет, скачиваем.

15
• Всякие дополнительные параметры, просто Finish.

16
• Ура, заработало!

17
4
Выкладываем
на Github

18
• Сначала делаем так, чтобы лишние файлы не попали в git
с помощью .gitignore. Открываем файл .gitignore (в корне проекта,
а не в каталоге app, - это важно!) и копируем туда следующее:

# built application files


*.apk
*.ap_

# files for the dex VM


*.dex

# Java class files


*.class

# generated files
bin/
gen/
build/

# Local configuration file (sdk path, etc)


local.properties

# Eclipse project files


.classpath
.project

# Proguard folder generated by Eclipse


proguard/

# Intellij project files


*.iml
*.ipr
*.iws
.idea/

# Windows & OS X stuff


.DS_Store
Thumbs.db

# Gradle files
.gradle
gradle-app.setting

# other stuff
*.hprof
hs_err*

19
GitHub

• Нажимаем Ctrl+Shift+A — магическое окошко, где можно ввести


все команды, которые умеет выполнять IDE. Вводим git и выбираем
Share Project on GitHub.

• На этих экранах всё очевидно.

20
• Это наш первый коммит, просто ОК.

21
Работа с git прямо в IDE

• Когда мы создаём новый файл, видим такой диалог:

• Ставим галку снизу, чтобы этот диалог больше не всплывал


и нажимаем Yes.
• Alt+9 показывает (и скрывает) окно с изменениями в проекте.

• Зелёные — новые файлы, уже в git.


• Серые — удалённые.
• Синие — изменённые. Ctrl+D на таком файле покажет удобное окно,
где видны изменения.
• Красные — файлы не в git, можно нажать Ctrl+Alt+A, и они
добавятся.

22
• Alt+` вызывает диалог операций

• Можно коммитить свои изменения. Обязательно внятное,


коротенькое описание коммита на английском языке, мы будем
к этому придираться, это важно на реальной работе. В нормальных
компаниях все комментарии, названия и т.д. тоже пишутся
по-английски. Так принято, от этого зависит впечатление,
которое вы произведёте. В мире разработки лучше даже
ломаный английский, чем русский.
• Откатывать (либо всё, либо некоторые файлы только).
• Пушить изменения на сервер.
• Переходить с ветки на ветку и создавать новые.

23
• Pull requests
Pull request — удобный механизм на GitHub и в других местах,
где можно наглядно посмотреть, что изменилось в новой ветке,
по сравнению с базовой, и оставить свои комментарии к изменениям.

Как в нормальных компаниях, мы работаем по pull requests. В начале


каждого ДЗ создаём новую ветку, потом делаем ДЗ, коммитим, пушим
и делаем pull-request, чтобы наставник мог удобно проверять ДЗ.
Можно создавать pull requests прямо из IDE.

24
• Base branch - всегда master.
• Title совпадает с именем ветки.
Ветка должна называться по смыслу — мы будем к этому
придираться, т.к. на работе будет важно уметь это делать.
• Обязательно коротенькое описание, желательно на английском.

25
4
Activity

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

<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.
intent.action.MAIN" />

<category android:name="android.
intent.category.LAUNCHER" />
</intent-filter>
</activity>

• Intent-filter - это механизм, с помощью которого система


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

Есть два базовых класса для активити — Activity


и AppCompatActivity. Мы используем AppCompatActivity — он делает
все новейшие функции Android API доступными на старых версиях ОС.

27
Жизненный цикл Activity

28
Система сама запускает Activity и в нужное время вызывает нам разные
callbacks (т.е. просто методы нашего Activity). Давайте посмотрим
внимательнее на жизненный цикл Activity, в каких состояниях оно
может находиться.

• Сначала мы получаем onCreate, где создаём layout и производим


разную инициализацию.
• Затем onStart непосредственно перед тем, как Activity становится
видимой пользователю.
• onResume — Activity вышла на передний план, и после этого
пользователь начинает взаимодействие с Activity.
• onPause — что-то появилось поверх нашей Activity, например,
всплывающее окно с СМС. Когда пользователь его закроет, получим
снова onResume.
• onStop — Activity вообще больше не видно (пользователь ушёл на
другой экран). Если вернётся, получим снова onStart.
• onDestroy — Activity уничтожается. Например, пользователь
нажал Back и вышел с нашего экрана. Вызов этого метода НЕ
гарантируется, так что здесь нельзя освобождать жизненно важные
ресурсы. Проще всего считать, что его вообще нет.

Переопределяя все эти методы, мы обязаны вызывать методы базового


класса, например, super.onResume(), иначе приложение упадёт!

Важно понимать, что в любой момент после onPause наше Activity


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

29
Полезные ссылки

• Теория AndroidManifestXML

• Теория activity-theory.php

• Теория resources.php

• По git-коммандам
• Очень полезно, список горячих клавиш
• Полезно, чтобы работать в IDE как профи.
На собеседовании можно блеснуть

30