Для кого написана эта книга?
Мы знаем, о чем вы думаете
И мы знаем, о чем думает ваш мозг
Метапознание: наука о мышлении
Вот что сделали МЫ
Примите к сведению
Научные редакторы Благодарности

Добро пожаловать в мир Android
Платформа Android в разрезе
Вот что мы сейчас сделаем
Среда разработки
Установите Java
Построение простого приложения
Давайте построим простое приложение
Построение простого приложения (продолжение)
Активности и макеты: с высоты птичьего полета
Построение простого приложения (продолжение)
Только что вы создали свое первое Android-приложение
Android Studio создает всю структуру папок за вас
Полезные файлы в проекте
Редактирование кода в Android Studio
Запуск приложения в эмуляторе Android
Создание виртуального устройства Android
Запуск приложения в эмуляторе
Информация о ходе запуска отображается на консоли
Тест-драйв
Что же только что произошло?
Модификация приложения
Что содержит макет?
activity_main.xml состоит из двух элементов
Файл макета содержит ссылку на строку, а не саму строку
Заглянем в файл strings.xml
Ваш инструментарий Android
В этой главе мы построим приложение для выбора пива
Что нужно сделать
Создание проекта
Мы создали активность и макет по умолчанию
Добавление компонентов в визуальном редакторе
В activity_find_beer.xml появилась новая кнопка
Подробнее о коде макета
Изменения в XML...отражаются в визуальном редакторе
Использование строковых ресурсов вместо жестко запрограммированного текста
Внесение изменений в макет для использования строковых ресурсов
Добавление значений в список
Передача массива строк раскрывающемуся списку
Тест-драйв раскрывающегося списка
Кнопка должна что-то делать
Как заставить кнопку вызвать метод
Как выглядит код активности
Добавление в активность метода onClickFindBeer()
Метод onClickFindBeer() должен что-то делать
Обновление кода активности
Первая версия активности
Что делает этот код
Построение вспомогательного класса Java
Код активности, версия 2
Что происходит при выполнении кода
Тест-драйв
Ваш инструментарий Android
Приложение может содержать несколько активностей
Структура приложения
Создание проекта
Обновление макета
Обновление strings.xml...
Создание второй активности и макета
Знакомьтесь: файл манифеста Android
Интент — разновидность сообщения
Использование интента для запуска второй активности
Что происходит при запуске приложения
Передача текста второй активности
Обновление свойств надписи
put£xtra() включает в интент дополнительную информацию
Обновление кода CreateMessageActivity
Использование информации из интента в Receive Message Activity
Что происходит при щелчке на кнопке Send Message
Как работают приложения Android
Создание интента с указанием действия
Изменение интента для использования действия
Что происходит при выполнении кода
Как Android использует фильтр интентов
Запуск приложения на РЕАЛЬНОМ устройстве
Что происходит при вызове createChooser()
Изменение кода выбора активности
Тест-драйв
Если подходящих активностей НЕТ
Ваш инструментарий Android
Как на самом деле работают активности?
Приложение Stopwatch
Разметка макета приложения Stopwatch
Как работает код активности
Добавление кода кнопок
Метод runTimer()
Объекты Handler позволяют планировать выполнение кода
Полный код runTimerQ
Полный код StopwatchActivity
Что происходит при запуске приложения
Поворот экрана изменяет конфигурацию устройства
От рождения до смерти: состояния активности
Жизненный цикл активности: от создания до уничтожения
Активность наследует свои методы жизненного цикла
Что делать при изменении конфигурации?
Что происходит при запуске приложения
Жизненный цикл активности: видимость
Необходимо реализовать еще два метода жизненного цикла
Обновленный код StopwatchActivity
Что происходит при запуске приложения
Жизненный цикл активности: видимость
Прекращение отсчета времени при приостановке активности
Что происходит при запуске приложения
Тест-драйв
Полный код активности
Краткое руководство по методам жизненного цикла
Ваш инструментарий Android
Три ключевых макета: относительный, линейный и табличный
Позиционирование представлений относительно родительского макета
Позиционирование предствлений относительно других представлений
Атрибуты для позиционирования представлений относительно других представлений
Относительный макет: итоги
В линейных макетах представления выводятся в одну строку или столбец
Начало настройки линейного макета
Назначение веса одному представлению
Назначение весов нескольким представлениям
Атрибут android:gravity: список значений
Другие допустимые значения атрибута android:layout-gravity
Полная разметка линейного макета
Линейный макет: итоги
Добавление представлений в табличный макет
Создание табличного макета
Строка 0: добавление представлений в конкретные строки и столбцы
Строка 1: представление занимает несколько столбцов
Строка 2: представление занимает несколько столбцов
Полный код табличного макета
Табличный макет: итоги
Ваш инструментарий Android
Каждое приложение начинается с идей
Проведите классификацию идей: верхний уровень, категории, детализация/редактирование
Навигация по активностям
Навигация с использованием списковых представлений
Построим приложение Starbuzz
Активность детализации с информацией о напитке
Структура приложения Starbuzz
Макет верхнего уровня содержит изображение и список
Полный код макета верхнего уровня
Обработка щелчков компонентом ListView
Полный код TopLevelActivity
Создание списковой активности
Связывание списковых представлений с массивами при помощи адаптера массива
Добавление адаптера массива в DrinkCategoryActivity
Что происходит при выполнении кода
Как мы обрабатывали щелчки в TopLevelActivity
Полный код DrinkCategoryActivity
Активность детализации выводит данные из одной записи
Обновление представлений
Код DrinkActivity
Тест-драйв
Ваш инструментарий Android
Структура приложения Workout
Класс Workout
Добавление фрагмента в проект
Добавление фрагмента в макет активности
Передача идентификатора фрагменту
Присваивание идентификатора
Жизненный цикл фрагмента
Ваш фрагмент наследует методы жизненного цикла
Создание фрагмента со списком
Создание спискового фрагмента
Использование ArrayAdapter для заполнения ListView
Обновленный код WorkoutListFragment
Включение фрагмента WorkoutListFragment в макет MainActivity
Связывание списка с детализацией
Логическое отделение фрагмента от активности
Добавление интерфейса к списковому фрагменту
Реализация интерфейса активностью
Фрагменты должны поддерживать кнопку возврата
Транзакции фрагментов
Обновленный код MainActivity
Тест-драйв
Поворот устройства нарушает работу приложения
Код WorkoutDetailFragment
Телефон и планшет
Структура приложения для планшета и телефона
Выбор имен папок
Макет MainActivity для телефона
Полный код DetailActivity
Использование различий в макетах
Обновленный код MainActivity
Тест-драйв
Ваш инструментарий Android
Создание вложенных фрагментов
Жизненные циклы фрагментов и активностей похожи
Код StopwatchFragment
Макет StopwatchFragment
Добавление фрагмента в WorkoutDetailFragment
Добавление фрейма в месте нахождения фрагмента
Отображение фрагмента в коде Java
getFragmentManager() создает транзакции на уровне активности
Вложенным фрагментам — вложенные транзакции
Отображение фрагмента в методе onCreateView() родителя
Полный код WorkoutDetailFragment
Почему при нажатии кнопки происходит сбой?
Обратимся к разметке макета StopwatchFragment
Атрибут onClick вызывает методы активности, а не фрагмента
Удаление атрибутов onClick из макета фрагмента
Реализация OnClickListener фрагментом
Связывание OnClickListener с кнопками
Код StopwatchFragment
При повороте устройства активность создается заново
Код WorkoutDetailFragment
Тест-драйв
Ваш инструментарий Android
Хорошее приложение имеет четкую структуру
Типы навигации
Начнем с панели действий
Библиотеки поддержки Android
Библиотеки поддержки можно включить в ваш проект
Использование современных тем в приложении themes
Применение темы в AndroidManifest.xml
Определение стилей в файлах стилевых ресурсов
Назначение темы по умолчанию в styles .xml
Что происходит при запуске приложения
Добавление элементов действий на панель действий
Файл ресурсов меню
Атрибут меню showAsAction
Добавление нового элемента действия
Создание OrderActivity
Запуск OrderActivity элементом действия Create Order
Полный код MainActivityjava
Передача информации с панели действий
Добавление провайдера в файл menu._main.xml
Информация задается при помощи интента
Полный код MainActivityjava
Код MainActivityjava (продолжение)
Навигация с кнопкой Вверх
Назначение родителя активности
Добавление кнопки Вверх
Тест-драйв
Д Ваш инструментарий Android
Возвращаемся к приложению Pizza
Подробнее о выдвижных панелях
Структура приложения Pizza
Создание фрагмента TopFragment
Создание фрагмента PizzaFragment
Создание фрагмента PastaFragment
Создание фрагмента StoresFragment
Добавление DrawerLayout
Полная разметка activity_main.xml
Инициализация списка на выдвижной панели
OnltemClickListener и обработка щелчков на вариантах спискового представления
Метод selectltem() — что было сделано
Изменение заголовка на панели действий
Закрытие выдвижной панели
Обновленный код MainActivityjava
Открытие и закрытие выдвижной панели
Использование ActionBarDrawerToggl
Изменение элементов панели действий во время выполнения
Обновленный код MainActivityjava
Управление открытием и закрытием выдвижной панели
Синхронизация состояния ActionBarDrawerToggle
Обновленный код MainActivityjava
Обработка изменений конфигурации
Реакция на изменения в стеке возврата
Назначение меток фрагментам
Поиск фрагмента по метке
Полный код MainActivityjava
Тест-драйв
Ваш инструментарий Android
Возвращение в Starbuzz
Android хранит информацию в базах данных SQLite
Android включает классы SQLite
Текущая структура приложения Starbuzz
Переход на работу с базой данных
Помощник SQLite управляет базой данных
Помощник SQLite
Внутри базы данных SQLite
Таблицы создаются командами
SQL
Вставка данных методом insert()
Обновление записей методом update()
Сложные условия
Код StarbuzzDatabaseHelpe
Что делает код помощника SQLite
А если структура базы данных изменится?
Номера версий баз данных SQLite
Обновление базы данных: сводка
История продолжается...
Как помощник SQLite принимает решения
Метод onU pgrade()
Метод onDowngrade()
Обновление базы данных
Обновление существующей базы данных
Переименование таблиц
Полный код помощника SQLite
Что происходит при выполнении кода
Ваш инструментарий Android
Текущий код DrinkActivity Определение таблицы и столбцов Упорядочение данных в запросах Функции
SQL в запросах Код DrinkActivity
Текущий код DrinkCategoryActivity Код DrinkActivity
Обновленный код TopLevelActivityjava Метод onPreExecute()
Метод doInBackground()
Метод onProgressU pdate ()
Метод onPostExecute()
Класс AsyncTask
Код DrinkActivityjava
Ваш инструментарий Android
Запускаемая служба
Класс IntentService — взгляд издалека
Объявление службы в AndroidManifest.xml
Службы запускаются вызовом startService()
Полный код DelayedMessageService.java
Использование службы уведомлений
Запуск активности из оповещения
Отправка уведомлений с использованием службы уведомлений
Полный код DelayedMessageService.java
Создание проекта Odometer
Определение Binder
Четыре ключевых метода класса Service
Получение информации о местонахождении
Добавление LocationListener в код службы
Регистрация LocationListener
Передача пройденного расстояния активности
Полный код OdometerService.java
Обновление AndroidManifest.xml
Обновление макета MainActivity
Создание объекта ServiceConnecdon
Вывод расстояния
Полный код MainActivityjava
Тесг-драйв
Ваш инструментарий Android
Знакомство с материальным оформлением
Структура приложения Pizza
Создание представлений CardView
Полная разметка card_captioned_.image.xml
Создание базового адаптера
Определение класса ViewHolder
Создание ViewHolder
Добавление данных в карточки
Полный код CaptionedlmagesAdapter.java
Создание RecyclerView
Добавление RecyclerView в макет
Код PizzaMaterialFragment.java
Размещение представлений в RecyclerView
Полный код PizzaMaterialFragmentjava
Использование нового фрагмента PizzaMaterialFragment в MainActivity
Что происходит при выполнении кода
Создание PizzaDetailActivity
Что должен делать код PizzaDetailActivityjava
Код PizzaDetailActivityjava
Выбор вариантов в RecyclerView
Прослушивание событий представлений в адаптере
Повторное использование адаптеров
Добавление интерфейса в адаптер
Реализация слушателя в PizzaMaterialFragment.java
Информацию — на передний план
Полная разметка fragment top.xml
Полный код IbpFragment.java
Ваш инструментарий Android
Добавить комментарий