
Вышла книга “Разработка Android-приложений с нуля. 3 изд.”, которая научит вас разрабатывать профессиональные, полнофункциональные приложения для Android, даже если раньше вы никогда не программировали!
Доступно изложены основы программирования на Java для Android, включая объектно-ориентированное программирование. Описаны установка и настройка среды разработки Android Studio, создание функциональных пользовательских интерфейсов с помощью визуального редактора Android Studio. Раскрыты принципы материального дизайна. Рассмотрены компоновки CardView и ScrollView, обработка касаний экрана, захват данных, использование в приложении звука и анимации, поддержка различных версий Android и нескольких языков интерфейса. Затронута тема хранения данных во встроенной базе данных SQLite. Показаны паттерны проектирования, используемые профессионалами для создания современных мобильных приложений.
Вы хотите сделать карьеру в программировании, но не знаете с чего начать? У вас есть отличная идея для мобильного приложения, и вы мечтаете воплотить ее в жизнь? Эта книга поможет реализовать ваши идеи и станет незаменимым руководством по созданию приложений для Android с нуля!
Вы познакомитесь со всеми фундаментальными понятиями программирования для Android, начиная с основ Java и заканчивая работой с Android API.
Вы изучите основы создания мобильных приложений в Android Studio и принципы объектно-ориентированного программирования.
Вы освоите разработку приложений с профессиональным современным интерфейсом и возможностью хранения пользовательских данных в базе SQLite.
Вы узнаете, как сделать приложение многоязычным, как рисовать на экране, работать с графикой, звуком и анимацией.
Вы будете готовы создавать собственные профессиональные приложения для Android на Java.
- Фундаментальные основы программирования для Android
- Использование всех возможностей Android Studio
- Разработка современных интерфейсов для мобильных приложений и материальный дизайн
- Синтаксис и возможности языка Java
- Объектно-ориентированное программирование
- Сохранение и совместное использование данных
- Анимация, рисование и графика, звуковые эффекты
- Поддержка различных версий Android и нескольких языков интерфейса
- Использование баз данных
Книгу “Разработка Android-приложений с нуля. 3 изд.” можно купить со скидкой в интернет-магазине издательства “БХВ“.
Предисловие……………………………………………………………………………………………………………………………… 17
Для кого эта книга……………………………………………………………………………………………………………………… 17
О чем эта книга…………………………………………………………………………………………………………………………… 18
Как получить максимум пользы от этой книги……………………………………………………………………….. 21
Файлы с примерами кода………………………………………………………………………………………………………….. 22
Цветные изображения……………………………………………………………………………………………………………….. 22
Условные обозначения……………………………………………………………………………………………………………… 22
Контакты…………………………………………………………………………………………………………………………………….. 23
Отзывы………………………………………………………………………………………………………………………………………… 23
Глава 1. Начало работы с Android и Java…………………………………………………………………………….. 24
Технические требования…………………………………………………………………………………………………………… 25
Новое в третьем издании…………………………………………………………………………………………………………… 25
Почему Java и Android?…………………………………………………………………………………………………………….. 26
Первый камень преткновения для новичков……………………………………………………………………………. 27
Как Java и Android работают вместе……………………………………………………………………………………….. 27
Что такое Android API………………………………………………………………………………………………………… 28
Java — объектно-ориентированный язык программирования………………………………………. 29
Повторим: что такое Android…………………………………………………………………………………………….. 31
Android Studio……………………………………………………………………………………………………………………… 31
Настройка Android Studio…………………………………………………………………………………………………………. 32
Что делает приложение для Android?………………………………………………………………………………………. 35
Ресурсы Android…………………………………………………………………………………………………………………. 35
Структура кода Java в Android…………………………………………………………………………………………………. 36
Пакеты…………………………………………………………………………………………………………………………………. 36
Классы………………………………………………………………………………………………………………………………… 37
Методы……………………………………………………………………………………………………………………………….. 37
Создание нашего первого приложения для Android……………………………………………………………….. 38
Развертывание приложения на данном этапе…………………………………………………………………………. 42
Запуск и отладка приложения на эмуляторе Android…………………………………………………….. 43
Запуск приложения на реальном устройстве………………………………………………………………….. 45
Часто задаваемые вопросы………………………………………………………………………………………………………. 47
Итоги…………………………………………………………………………………………………………………………………………… 47
Глава 2. Первое знакомство: Java, XML и визуальный редактор…………………………………… 48
Технические требования…………………………………………………………………………………………………………… 48
Изучение вывода Logcat……………………………………………………………………………………………………………. 48
Фильтрация вывода Logcat……………………………………………………………………………………………….. 49
Java-проект и XML-код основной компоновки……………………………………………………………………….. 50
Файл MainActivity.java……………………………………………………………………………………………………… 50
Сворачивание (скрытие) кода в Android Studio……………………………………………………… 50
Объявление пакета……………………………………………………………………………………………………. 51
Импорт классов…………………………………………………………………………………………………………. 52
Класс………………………………………………………………………………………………………………………….. 52
Методы внутри класса……………………………………………………………………………………………… 53
Итог по коду Java на данный момент……………………………………………………………………… 53
Файл компоновки приложения………………………………………………………………………………………….. 53
Элементы компоновки пользовательского интерфейса………………………………………… 56
Текстовые элементы пользовательского интерфейса……………………………………………. 56
Элементы-кнопки пользовательского интерфейса………………………………………………… 57
Добавление кнопок в основной файл компоновки………………………………………………………………….. 57
Добавление кнопки с использованием визуального редактора…………………………………….. 58
Редактирование атрибутов кнопки…………………………………………………………………………. 60
XML-код новой кнопки…………………………………………………………………………………………….. 62
Добавление кнопки путем редактирования XML-кода………………………………………………….. 63
Назначение кнопкам уникальных атрибутов id……………………………………………………………… 65
Размещение двух кнопок в компоновке……………………………………………………………………………. 65
Как заставить кнопки вызывать разные методы……………………………………………………………… 68
Комментирование Java-кода…………………………………………………………………………………………………….. 69
Отправка сообщений пользователю и разработчику…………………………………………………………….. 69
Написание первого Java-кода………………………………………………………………………………………………….. 70
Добавление кода с сообщением в метод onCreate………………………………………………………….. 70
Изучение вывода……………………………………………………………………………………………………….. 71
Написание собственных методов Java…………………………………………………………………………….. 72
Изучение вывода……………………………………………………………………………………………………….. 74
Часто задаваемые вопросы………………………………………………………………………………………………………. 75
Итоги…………………………………………………………………………………………………………………………………………… 75
Глава 3. Android Studio и структура проекта………………………………………………………………………. 77
Технические требования…………………………………………………………………………………………………………… 78
Проводник проекта и анатомия проекта…………………………………………………………………………………. 78
Структура файлов и папок в шаблоне проекта Empty Activity…………………………………………….. 78
Проект Empty Activity………………………………………………………………………………………………………… 80
Папка manifests………………………………………………………………………………………………………….. 81
Папка java………………………………………………………………………………………………………………….. 83
Папка Java (generated)……………………………………………………………………………………………… 86
Папка res……………………………………………………………………………………………………………………. 86
Папка res/drawable……………………………………………………………………………………………………. 86
Папка res/layout………………………………………………………………………………………………………… 87
Папка res/mipmap………………………………………………………………………………………………………. 87
Папка res/values………………………………………………………………………………………………………… 89
Файл colors.xml………………………………………………………………………………………………………….. 89
Файл strings.xml…………………………………………………………………………………………………………. 90
Cтруктура файлов и папок в шаблоне проекта Basic Activity……………………………………………….. 92
Проект Basic Activity………………………………………………………………………………………………………………….. 93
Файл MainActivity.java……………………………………………………………………………………………… 93
Файл activity_main.xml……………………………………………………………………………………………… 96
Дополнительные методы в MainActivity.java…………………………………………………………. 97
Эмулятор Android………………………………………………………………………………………………………………………. 98
Панель управления эмулятором……………………………………………………………………………………….. 99
Использование эмулятора как реального устройства………………………………………………….. 100
Доступ к панели приложений………………………………………………………………………………… 100
Просмотр активных приложений и переключение между приложениями………… 101
Итоги…………………………………………………………………………………………………………………………………………. 102
Глава 4. Начало работы с компоновками и материальный дизайн…………………………….. 103
Технические требования…………………………………………………………………………………………………………. 104
Материальный дизайн…………………………………………………………………………………………………………….. 104
Дизайн пользовательского интерфейса Android…………………………………………………………………… 104
Компоновки………………………………………………………………………………………………………………………………. 105
Создание и изучение проекта компоновок…………………………………………………………………….. 105
Создание компоновки с помощью LinearLayout…………………………………………………………… 106
Добавление типа компоновки LinearLayout в проект…………………………………………………… 107
Подготовка рабочего пространства………………………………………………………………………………. 108
Изучение сгенерированного XML-кода…………………………………………………………………………. 108
Добавление TextView в пользовательский интерфейс………………………………………………….. 110
Добавление многострочного TextView в пользовательский интерфейс……………………… 112
Подключение пользовательского интерфейса с помощью кода Java. Часть 1…………… 113
Добавление компоновок в компоновки………………………………………………………………………….. 116
Украшение компоновки…………………………………………………………………………………………………… 119
Подключение пользовательского интерфейса с помощью кода Java. Часть 2…………… 121
Создание точного пользовательского интерфейса с помощью ConstraintLayout……………… 121
Добавление CalendarView……………………………………………………………………………………………….. 121
Изменение размера представления в ConstraintLayout……………………………………….. 122
Использование окна Component Tree……………………………………………………………………. 122
Добавление ограничений вручную……………………………………………………………………….. 124
Добавление и ограничение дополнительных элементов пользовательского интерфейса 126
Создание интерактивного текста……………………………………………………………………………………. 128
Размещение данных с помощью TableLayout……………………………………………………………………….. 129
Добавление элемента TableRow…………………………………………………………………………………….. 130
Использование Component Tree для решения задач, невыполнимых
в визуальном редакторе…………………………………………………………………………………………. 130
Организация столбцов таблицы……………………………………………………………………………………… 132
Добавление ссылки на главное меню…………………………………………………………………………………….. 134
Итоги…………………………………………………………………………………………………………………………………………. 135
Глава 5. Красивые компоновки на основе CardView и ScrollView………………………………… 136
Технические требования…………………………………………………………………………………………………………. 136
Атрибуты пользовательского интерфейса…………………………………………………………………………….. 136
Размеры и использование dp…………………………………………………………………………………………… 136
Размеры шрифтов и использование sp……………………………………………………………………………. 137
Определение размера с wrap и match…………………………………………………………………………….. 139
Использование padding и margin……………………………………………………………………………………. 140
Использование свойства layout_weight…………………………………………………………………………. 141
Использование gravity……………………………………………………………………………………………………… 142
Создание пользовательского интерфейса с помощью CardView и ScrollView…………………… 144
Настройка представления с помощью кода Java…………………………………………………………. 144
Добавление изображений……………………………………………………………………………………………….. 145
Создание контента для карточек……………………………………………………………………………………. 146
Определение размеров для CardView…………………………………………………………………………….. 149
Добавление CardView в компоновку………………………………………………………………………………. 149
Добавление файлов компоновки внутрь другой компоновки……………………………… 151
Создание эмулятора планшета………………………………………………………………………………………………. 154
Часто задаваемые вопросы…………………………………………………………………………………………………….. 156
Итоги…………………………………………………………………………………………………………………………………………. 156
Глава 6. Жизненный цикл Android…………………………………………………………………………………….. 157
Технические требования…………………………………………………………………………………………………………. 157
Жизнь приложения для Android……………………………………………………………………………………………… 158
Взаимодействие Android с приложениями…………………………………………………………………………….. 158
Упрощенное объяснение жизненного цикла Android……………………………………………………………. 159
Демистификация фаз жизненного цикла………………………………………………………………………… 160
Работа с фазами жизненного цикла……………………………………………………………………………………….. 161
Демонстрационное приложение жизненного цикла…………………………………………………………….. 163
Написание кода для демонстрационного приложения жизненного цикла………………… 164
Запуск демонстрационного приложения жизненного цикла……………………………………….. 166
Вывод демонстрационного приложения жизненного цикла………………………………………… 167
Некоторые другие переопределенные методы……………………………………………………………… 168
Еще раз о структуре кода Java……………………………………………………………………………………………….. 170
Представление фрагментов и жизненного цикла………………………………………………………………….. 171
Итоги…………………………………………………………………………………………………………………………………………. 172
Глава 7. Переменные, операторы и выражения Java………………………………………………………. 173
Технические требования…………………………………………………………………………………………………………. 173
Java повсюду……………………………………………………………………………………………………………………………. 174
Синтаксис и жаргон Java………………………………………………………………………………………………………… 174
Дополнительные комментарии к коду……………………………………………………………………………. 175
Хранение и использование данных с переменными…………………………………………………………….. 177
Типы переменных…………………………………………………………………………………………………………….. 178
Примитивные типы…………………………………………………………………………………………………. 178
Ссылочные типы…………………………………………………………………………………………………….. 181
Использование переменных……………………………………………………………………………………………………. 182
Объявление переменной………………………………………………………………………………………………………….. 182
Инициализация переменной……………………………………………………………………………………………………. 183
Изменение значений переменных с помощью операторов………………………………………………….. 184
Оператор присваивания………………………………………………………………………………………………….. 184
Оператор сложения………………………………………………………………………………………………………….. 184
Оператор вычитания……………………………………………………………………………………………………….. 185
Оператор деления…………………………………………………………………………………………………………….. 185
Оператор умножения……………………………………………………………………………………………………….. 185
Оператор инкремента………………………………………………………………………………………………………. 186
Оператор декремента………………………………………………………………………………………………………. 186
Выражения Java………………………………………………………………………………………………………………………. 186
Демоприложение Expressing Yourself…………………………………………………………………………….. 187
Итог…………………………………………………………………………………………………………………………………………… 189
Глава 8. Условия и циклы Java…………………………………………………………………………………………… 190
Технические требования…………………………………………………………………………………………………………. 190
Принятие решений в Java………………………………………………………………………………………………………… 191
Отступы в коде для ясности…………………………………………………………………………………………….. 191
Больше операторов………………………………………………………………………………………………………….. 192
Оператор сравнения……………………………………………………………………………………………….. 192
Логический оператор отрицания…………………………………………………………………………… 192
Оператор НЕравенства………………………………………………………………………………………….. 193
Оператор «больше»………………………………………………………………………………………………… 193
Оператор «меньше»………………………………………………………………………………………………… 193
Оператор «больше или равно»………………………………………………………………………………. 193
Оператор «меньше или равно»………………………………………………………………………………. 193
Логический оператор «И»………………………………………………………………………………………. 193
Логический оператор «ИЛИ»…………………………………………………………………………………. 194
Оператор модуля…………………………………………………………………………………………………….. 194
Использование операторов для проверки переменных………………………………………………… 194
Использование ключевого слова if языка Java…………………………………………………….. 194
Switch и принятие решений…………………………………………………………………………………………………….. 197
Демоприложение Switch………………………………………………………………………………………………….. 198
Повторение кода с циклами……………………………………………………………………………………………………. 200
Циклы while………………………………………………………………………………………………………………………. 200
Выход из цикла……………………………………………………………………………………………………….. 202
Ключевое слово continue……………………………………………………………………………………….. 203
Циклы do while…………………………………………………………………………………………………………………. 204
Циклы for………………………………………………………………………………………………………………………………….. 205
Демоприложение Loops для работы с циклами……………………………………………………………………. 206
Итоги…………………………………………………………………………………………………………………………………………. 209
Глава 9. Методы Java…………………………………………………………………………………………………………….. 210
Технические требования…………………………………………………………………………………………………………. 210
Еще раз о методах……………………………………………………………………………………………………………………. 210
Java-методы……………………………………………………………………………………………………………………… 211
Структура метода……………………………………………………………………………………………………………………. 211
Модификатор……………………………………………………………………………………………………………………. 212
Возвращаемый тип…………………………………………………………………………………………………………… 213
Имя метода……………………………………………………………………………………………………………………….. 214
Параметры………………………………………………………………………………………………………………………… 215
Тело метода………………………………………………………………………………………………………………………. 216
Демонстрационное приложение для изучения методов………………………………………………………. 216
Методы Real world…………………………………………………………………………………………………………… 217
Обнаружение области видимости переменной……………………………………………………. 218
Перегрузка метода…………………………………………………………………………………………………………………… 219
Еще раз об области видимости и переменных………………………………………………………………………. 221
Рекурсия метода………………………………………………………………………………………………………………………. 222
Вопросы……………………………………………………………………………………………………………………………………. 224
Итоги…………………………………………………………………………………………………………………………………………. 225
Самостоятельное чтение…………………………………………………………………………………………………………. 226
Глава 10. Объектно-ориентированное программирование…………………………………………… 227
Технические требования…………………………………………………………………………………………………………. 227
Важное предупреждение об управлении памятью………………………………………………………………. 227
Объектно-ориентированное программирование………………………………………………………………….. 228
Что такое ООП?………………………………………………………………………………………………………………… 228
Инкапсуляция………………………………………………………………………………………………………….. 228
Полиморфизм…………………………………………………………………………………………………………… 229
Наследование………………………………………………………………………………………………………….. 229
Почему надо делать именно так?…………………………………………………………………………………… 230
Резюме: класс……………………………………………………………………………………………………………………. 230
Код класса………………………………………………………………………………………………………………………………… 230
Реализация класса……………………………………………………………………………………………………………. 231
Объявление, инициализация и использование объекта класса……………………………………. 231
Приложение Basic Classes……………………………………………………………………………………………………….. 234
Что еще можно сделать с нашим первым классом………………………………………………………… 237
Часто задаваемые вопросы…………………………………………………………………………………………………….. 238
Итоги…………………………………………………………………………………………………………………………………………. 238
Глава 11. Больше объектно-ориентированного программирования…………………………… 239
Технические требования…………………………………………………………………………………………………………. 239
Вы еще помните об инкапсуляции?……………………………………………………………………………………….. 239
Управление доступом к классам с помощью модификаторов доступа………………………. 240
Модификаторы доступа к классам……………………………………………………………………….. 241
Резюме: доступ к классам………………………………………………………………………………………. 241
Управление доступом к переменным с помощью модификаторов доступа……………….. 241
Модификаторы доступа к переменным………………………………………………………………… 242
Резюме: доступ к переменным……………………………………………………………………………….. 243
Методы и модификаторы доступа…………………………………………………………………………………. 243
Модификаторы доступа к методам………………………………………………………………………. 243
Резюме: доступ к методу………………………………………………………………………………………… 244
Доступ к private-переменным с помощью геттеров и сеттеров………………………………… 244
Настройка объектов с помощью конструкторов…………………………………………………………… 247
Статические методы………………………………………………………………………………………………………………… 249
Мини-приложение инкапсуляции и статических методов…………………………………………………… 251
ООП и наследование……………………………………………………………………………………………………………….. 255
Приложение с наследованием………………………………………………………………………………………………… 257
Полиморфизм……………………………………………………………………………………………………………………………. 261
Абстрактные классы………………………………………………………………………………………………………… 262
Интерфейсы………………………………………………………………………………………………………………………. 263
Часто задаваемые вопросы…………………………………………………………………………………………………….. 265
Итоги…………………………………………………………………………………………………………………………………………. 265
Глава 12. Стек, куча и сборщик мусора…………………………………………………………………………….. 266
Технические требования…………………………………………………………………………………………………………. 266
Все элементы пользовательского интерфейса Android — тоже классы……………………………… 266
Ссылки: повторное знакомство………………………………………………………………………………………. 267
Небольшой перерыв, чтобы выбросить мусор…………………………………………………….. 267
Шесть фактов о стеке и куче………………………………………………………………………………….. 268
В чем польза этой кучи?………………………………………………………………………………………………….. 268
Использование кнопок и виджетов TextView из компоновки………………………………………… 269
Запуск приложения………………………………………………………………………………………………………….. 277
Внутренние и анонимные классы…………………………………………………………………………………………… 278
Часто задаваемые вопросы…………………………………………………………………………………………………….. 279
Итоги…………………………………………………………………………………………………………………………………………. 279
Глава 13. Анонимные классы. Оживление виджетов Android……………………………………….. 280
Технические требования…………………………………………………………………………………………………………. 281
Объявление и инициализация объектов…………………………………………………………………………………. 281
Создание виджетов пользовательского интерфейса из Java без XML……………………………….. 281
Изучение палитры. Часть 1…………………………………………………………………………………………………….. 282
Виджет EditText………………………………………………………………………………………………………………… 283
Виджет ImageView……………………………………………………………………………………………………………. 283
Радиокнопки и группы…………………………………………………………………………………………………….. 284
Анонимные классы………………………………………………………………………………………………………………….. 285
Изучение палитры и анонимные классы. Часть 2…………………………………………………………………. 288
Switch………………………………………………………………………………………………………………………………… 288
CheckBox…………………………………………………………………………………………………………………………… 289
TextClock…………………………………………………………………………………………………………………………… 290
Использование WebView………………………………………………………………………………………………….. 290
Приложение Widget Exploration……………………………………………………………………………………………… 291
Настройка проекта Widget Exploration и его пользовательского интерфейса……………. 291
Написание кода для приложения Widget Exploration…………………………………………………… 297
Получение ссылок на все части пользовательского интерфейса……………………….. 297
Написание кода с чекбоксами……………………………………………………………………………….. 299
Написание кода с радиокнопками………………………………………………………………………… 301
Использование анонимного класса для обычной кнопки Button……………………….. 302
Написание кода для виджета Switch…………………………………………………………………….. 303
Использование WebView…………………………………………………………………………………………………………. 304
Запуск приложения Widget Exploration………………………………………………………………………………….. 304
Итоги…………………………………………………………………………………………………………………………………………. 306
Глава 14. Диалоговые окна Android…………………………………………………………………………………… 307
Технические требования…………………………………………………………………………………………………………. 307
Диалоговые окна……………………………………………………………………………………………………………………… 307
Создание проекта Dialog Demo………………………………………………………………………………………. 308
Написание кода класса DialogFragment……………………………………………………………………….. 308
Использование цепочки для конфигурации DialogFragment……………………………… 310
Использование класса DialogFragment…………………………………………………………………………. 311
Приложение Note to Self………………………………………………………………………………………………………….. 313
Применение соглашений об именах и строковых ресурсах………………………………………… 314
Получение файлов кода для приложения Note to Self………………………………………………….. 314
Завершенное приложение……………………………………………………………………………………………….. 315
Создание проекта…………………………………………………………………………………………………………….. 318
Подготовка строковых ресурсов…………………………………………………………………………………….. 318
Написание кода класса Note…………………………………………………………………………………………… 319
Реализация компоновок для диалоговых окон……………………………………………………………… 321
Написание кода диалоговых окон…………………………………………………………………………………. 325
Написание кода класса DialogNewNote……………………………………………………………….. 325
Написание кода класса DialogShowNote……………………………………………………………… 329
Удаление ненужных автосгенерированных фрагментов……………………………………. 331
Демонстрация диалоговых окон…………………………………………………………………………………….. 332
Написание кода плавающей кнопки действия…………………………………………………….. 333
Итоги…………………………………………………………………………………………………………………………………………. 336
Глава 15. Массивы, словари Map и случайные числа……………………………………………………… 337
Технические требования…………………………………………………………………………………………………………. 337
«Случайное» отступление………………………………………………………………………………………………………. 338
Обработка больших объемов данных с помощью массивов……………………………………………….. 338
Массивы — это объекты…………………………………………………………………………………………………. 340
Пример мини-приложения с простым массивом…………………………………………………………………… 341
Реализация динамического массива………………………………………………………………………………………. 342
Мини-приложение с динамическим массивом………………………………………………………………. 343
Работа с многомерными массивами………………………………………………………………………………………. 344
Мини-приложение с многомерным массивом……………………………………………………………….. 344
Исключения Array-out-of-bounds…………………………………………………………………………………….. 347
Структура данных ArrayList…………………………………………………………………………………………………… 348
Расширенный цикл for……………………………………………………………………………………………………… 349
Полиморфизм массивов и экземпляров ArrayList………………………………………………………………….. 350
Больше коллекций Java: HashMap…………………………………………………………………………………………. 351
Приложение Note to Self………………………………………………………………………………………………………….. 352
Часто задаваемые вопросы…………………………………………………………………………………………………….. 353
Итоги…………………………………………………………………………………………………………………………………………. 353
Глава 16. Адаптеры и классы Recycler……………………………………………………………………………….. 354
Технические требования…………………………………………………………………………………………………………. 354
RecyclerView и RecyclerAdapter………………………………………………………………………………………………. 354
Проблема с отображением большого количества виджетов……………………………………….. 355
Решение проблемы отображения большого количества виджетов…………………………….. 355
Практическое применение RecyclerView и RecyclerAdapter…………………………………………. 356
Настройка RecyclerView с RecyclerAdapter и заметками ArrayList……………………………… 357
Добавление RecyclerView, RecyclerAdapter и ArrayList в проект Note to Self……………………… 358
Удаление временной кнопки Show Note и добавление RecyclerView………………………………….. 358
Создание элемента списка для RecyclerView………………………………………………………………… 359
Написание кода класса RecyclerAdapter……………………………………………………………………….. 360
Написание кода конструктора NoteAdapter………………………………………………………… 364
Написание кода метода onCreateViewHolder………………………………………………………. 364
Написание метода onBindViewHolder………………………………………………………………….. 365
Написание кода метода getItemCount…………………………………………………………………… 365
Написание кода внутреннего класса ListItemHolder…………………………………………… 366
Написание кода MainActivity для использования классов RecyclerView и RecyclerAdapter 367
Добавление кода в метод onCreate……………………………………………………………………….. 367
Изменение метода addNote…………………………………………………………………………………….. 368
Написание метода showNote…………………………………………………………………………………. 368
Запуск приложения………………………………………………………………………………………………………………….. 369
Часто задаваемые вопросы…………………………………………………………………………………………………….. 370
Итоги…………………………………………………………………………………………………………………………………………. 370
Глава 17. Сохранение и совместное использование данных…………………………………………. 371
Технические требования…………………………………………………………………………………………………………. 371
«Намерения» Android………………………………………………………………………………………………………………. 372
Переключение Activity……………………………………………………………………………………………………… 372
Передача данных между активностями…………………………………………………………………………. 373
Добавление страницы настроек в Note to Self………………………………………………………………………. 374
Создание SettingsActivity…………………………………………………………………………………………………. 374
Разработка компоновки экрана настроек……………………………………………………………………… 375
Предоставление пользователю возможности переключаться на экран настроек…….. 375
Сохранение данных с помощью SharedPreferences……………………………………………………………… 377
Загрузка данных с помощью SharedPreferences…………………………………………………………………… 378
Сохранение настроек приложения Note to Self…………………………………………………………………….. 379
Написание кода класса SettingsActivity…………………………………………………………………………. 379
Написание кода класса MainActivity……………………………………………………………………………… 381
Более продвинутый способ сохранения данных………………………………………………………………….. 383
Классы JSON…………………………………………………………………………………………………………………….. 383
Исключения Java: try, catch и finally………………………………………………………………………………. 384
Резервное копирование пользовательских данных в Note to Self……………………………………….. 385
Часто задаваемые вопросы…………………………………………………………………………………………………….. 391
Итоги…………………………………………………………………………………………………………………………………………. 391
Глава 18. Локализация…………………………………………………………………………………………………………. 392
Технические требования…………………………………………………………………………………………………………. 392
Реализация поддержки испанского и немецкого языков в приложении Note to Self………….. 392
Добавление поддержки испанского языка…………………………………………………………………….. 393
Добавление поддержки немецкого языка………………………………………………………………………. 393
Добавление строковых ресурсов……………………………………………………………………………………. 394
Запуск приложения Note to Self на немецком или испанском языке…………………………………… 396
Выполнение переводов в коде Java………………………………………………………………………………… 396
Итоги…………………………………………………………………………………………………………………………………………. 399
Глава 19. Анимация и интерполяторы………………………………………………………………………………. 400
Технические требования…………………………………………………………………………………………………………. 400
Анимации в Android…………………………………………………………………………………………………………………. 400
Создание интересной анимации в XML…………………………………………………………………………. 401
Исчезновение и появление……………………………………………………………………………………… 401
Движение…………………………………………………………………………………………………………………. 401
Масштабирование, или растяжение……………………………………………………………………… 401
Контроль продолжительности………………………………………………………………………………. 402
Вращение…………………………………………………………………………………………………………………. 402
Повторение анимации…………………………………………………………………………………………….. 402
Комбинирование эффектов анимации с помощью set…………………………………………. 402
Создание анимаций и управление ими с помощью кода Java…………………………………….. 403
Дополнительные функции анимации……………………………………………………………………………… 403
Слушатели анимации…………………………………………………………………………………………….. 403
Интерполяторы анимации……………………………………………………………………………………… 404
Демонстрационное приложение анимации. Знакомство с SeekBar…………………………………….. 405
Демонстрационная анимация…………………………………………………………………………………………. 405
Написание кода XML-анимации……………………………………………………………………………………. 408
Использование Java в демонстрационном приложении анимации…………………………….. 412
Часто задаваемые вопросы…………………………………………………………………………………………………….. 420
Итоги…………………………………………………………………………………………………………………………………………. 421
Глава 20. Рисование и графика…………………………………………………………………………………………… 422
Технические требования…………………………………………………………………………………………………………. 422
Понятие о классе Canvas…………………………………………………………………………………………………………. 422
Рисование с помощью Bitmap, Canvas и ImageView……………………………………………………… 423
Canvas и Bitmap………………………………………………………………………………………………………. 423
Paint…………………………………………………………………………………………………………………………. 423
ImageView и Activity………………………………………………………………………………………………… 424
Краткий обзор Canvas, Bitmap, Paint и ImageView………………………………………………. 424
Использование класса Canvas………………………………………………………………………………………………… 425
Подготовка экземпляров необходимых классов…………………………………………………………… 425
Инициализация объектов………………………………………………………………………………………………… 425
Настройка содержимого Activity……………………………………………………………………………………. 426
Демонстрационное приложение Canvas……………………………………………………………………………….. 426
Создание нового проекта………………………………………………………………………………………………… 426
Написание кода демонстрационного приложения Canvas………………………………… 427
Инициализация Bitmap…………………………………………………………………………………………… 428
Рисование на экране……………………………………………………………………………………………….. 428
Метод Color.argb……………………………………………………………………………………………………. 429
Система координат Android……………………………………………………………………………………………………. 431
Черчение и рисование……………………………………………………………………………………………………… 431
Создание растровых изображений………………………………………………………………………………………… 432
Управление растровыми изображениями……………………………………………………………………………… 433
Что такое растровое изображение…………………………………………………………………………………. 433
Класс Matrix……………………………………………………………………………………………………………………… 433
Поворот растрового изображения в противоположное направление……………….. 434
Поворот растрового изображения вверх или вниз………………………………………………. 435
Демонстрационное приложение для работы с растровыми изображениями…………………….. 436
Добавление графики в проект…………………………………………………………………………………………. 436
Часто задаваемые вопросы…………………………………………………………………………………………………….. 440
Итоги…………………………………………………………………………………………………………………………………………. 440
Глава 21. Потоки. Разработка приложения для интерактивного рисования……………… 441
Технические требования…………………………………………………………………………………………………………. 441
Создание проекта Live Drawing………………………………………………………………………………………………. 441
Рефакторинг MainActivity в LiveDrawingActivity…………………………………………………………… 442
Блокировка игры в полноэкранном альбомном режиме………………………………………………. 442
Создание классов для нового приложения…………………………………………………………… 443
О структуре приложения Live Drawing…………………………………………………………………………… 443
Написание кода класса LiveDrawingActivity…………………………………………………………………. 444
Написание кода класса LiveDrawingView……………………………………………………………………… 447
Добавление полей класса………………………………………………………………………………………. 449
Написание кода конструктора LiveDrawingView………………………………………………… 451
Написание кода метода draw………………………………………………………………………………… 453
Добавление метода printDebuggingText……………………………………………………………….. 454
Метод draw и класс SurfaceView…………………………………………………………………………… 455
Игровой цикл……………………………………………………………………………………………………………………………. 456
Потоки………………………………………………………………………………………………………………………………………. 458
Возможные проблемы с потоками………………………………………………………………………………….. 459
Реализация игрового цикла с помощью потока……………………………………………………………………. 462
Реализация Runnable и подготовка метода run…………………………………………………………….. 462
Написание кода потока…………………………………………………………………………………………………… 463
Запуск и остановка потока……………………………………………………………………………………………… 463
Использование жизненного цикла Activity для запуска и остановки потока……………… 464
Написание кода метода run……………………………………………………………………………………………. 464
Запуск приложения………………………………………………………………………………………………………………….. 467
Итоги…………………………………………………………………………………………………………………………………………. 468
Глава 22. Системы частиц и обработка касаний экрана……………………………………………….. 469
Технические требования…………………………………………………………………………………………………………. 469
Добавление пользовательских кнопок на экран…………………………………………………………………… 470
Реализация эффекта системы частиц…………………………………………………………………………………….. 470
Написание кода класса Particle……………………………………………………………………………………… 471
Написание кода класса ParticleSystem………………………………………………………………………….. 473
Создание систем частиц в классе LiveDrawingView……………………………………………………… 478
Обработка касаний………………………………………………………………………………………………………………….. 479
Написание кода метода onTouchEvent………………………………………………………………………….. 481
Завершение создания HUD……………………………………………………………………………………………… 482
Запуск приложения………………………………………………………………………………………………………………….. 483
Profiler: инструмент профилирования Android Studio………………………………………………………….. 484
Итоги…………………………………………………………………………………………………………………………………………. 487
Глава 23. Поддержка различных версий Android, звуковые эффекты
и виджет Spinner……………………………………………………………………………………………………………………… 488
Работа с разными версиями Android………………………………………………………………………………………. 488
Определение текущей версии Android……………………………………………………………………………. 489
Класс SoundPool……………………………………………………………………………………………………………………… 489
Инициализация SoundPool новым способом…………………………………………………………………. 490
Инициализация SoundPool старым способом……………………………………………………………….. 491
Загрузка звуковых файлов в память……………………………………………………………………… 491
Воспроизведение звука…………………………………………………………………………………………… 492
Остановка звука………………………………………………………………………………………………………. 493
Звуковое демонстрационное приложение и знакомство с виджетом Spinner……………………. 493
Создание звуковых эффектов………………………………………………………………………………………….. 493
Настройка звука………………………………………………………………………………………………………………. 496
Написание кода звукового демоприложения………………………………………………………………… 498
Итоги…………………………………………………………………………………………………………………………………………. 502
Глава 24. Шаблоны проектирования, множество компоновок и фрагменты…………….. 503
Технические требования…………………………………………………………………………………………………………. 503
Паттерн model-view-controller………………………………………………………………………………………………… 504
Рекомендации по дизайну приложений для Android…………………………………………………………….. 505
Реальные приложения……………………………………………………………………………………………………………… 506
Мини-приложение для обнаружения устройств…………………………………………………………………… 508
Написание кода класса MainActivity……………………………………………………………………………… 511
Разблокировка автоповорота экрана……………………………………………………………………. 512
Запуск приложения………………………………………………………………………………………………………….. 513
Квалификаторы конфигурации………………………………………………………………………………………………. 514
Ограничение квалификаторов конфигурации……………………………………………………………….. 516
Фрагменты………………………………………………………………………………………………………………………………… 517
Фрагменты: жизненный цикл………………………………………………………………………………………….. 517
Управление фрагментами с помощью FragmentManager…………………………………………….. 517
Наше первое приложение с Fragment……………………………………………………………………………………. 519
Проверка фрагмента в реальных условиях…………………………………………………………………………… 524
Часто задаваемые вопросы…………………………………………………………………………………………………….. 525
Итоги…………………………………………………………………………………………………………………………………………. 525
Глава 25. Создание приложения простой галереи изображений…………………………………… 526
Технические требования…………………………………………………………………………………………………………. 526
Классическое свайп-меню Angry Birds…………………………………………………………………………………… 526
Создание галереи изображений (слайдера)………………………………………………………………………….. 527
Реализация компоновки…………………………………………………………………………………………………… 528
Написание кода класса PagerAdapter……………………………………………………………………………. 529
Написание кода класса MainActivity……………………………………………………………………………… 531
Запуск приложения галереи……………………………………………………………………………………………. 533
Итог…………………………………………………………………………………………………………………………………………… 533
Глава 26. Расширенный пользовательский интерфейс с Navigation Drawer и Fragment 534
Технические требования…………………………………………………………………………………………………………. 534
Знакомство с NavigationView…………………………………………………………………………………………………. 535
Простое приложение базы данных………………………………………………………………………………………… 536
Insert………………………………………………………………………………………………………………………………….. 536
Delete…………………………………………………………………………………………………………………………………. 536
Search………………………………………………………………………………………………………………………………… 537
Results………………………………………………………………………………………………………………………………… 538
Реализация проекта Age Database………………………………………………………………………………………….. 538
Изучение автоматически сгенерированного кода и ресурсов…………………………………………….. 538
Написание кода классов Fragment и их компоновок……………………………………………………. 540
Создание пустых файлов для классов и компоновок……………………………………………………. 540
Написание классов………………………………………………………………………………………………………….. 540
Разработка компоновок…………………………………………………………………………………………………… 543
Разработка content_insert.xml…………………………………………………………………………………………. 543
Разработка content_delete.xml………………………………………………………………………………………… 543
Разработка content_search.xml……………………………………………………………………………………….. 544
Разработка content_results.xml……………………………………………………………………………………….. 545
Использование классов Fragment и их компоновок……………………………………………………………… 545
Редактирование меню Navigation Drawer……………………………………………………………………… 545
Добавление держателя к основной компоновке……………………………………………………………. 546
Написание кода класса MainActivity.java……………………………………………………………………… 547
Итоги…………………………………………………………………………………………………………………………………………. 550
Глава 27. Базы данных Android…………………………………………………………………………………………… 551
Технические требования…………………………………………………………………………………………………………. 551
Базы данных…………………………………………………………………………………………………………………………….. 552
Что такое база данных?…………………………………………………………………………………………………… 552
Что такое SQL?…………………………………………………………………………………………………………………. 552
Что такое SQLite?……………………………………………………………………………………………………………… 552
Учебник по синтаксису SQL……………………………………………………………………………………………………. 553
Пример кода SQLite………………………………………………………………………………………………………….. 553
Создание таблицы………………………………………………………………………………………………….. 553
Добавление данных в базу…………………………………………………………………………………….. 554
Получение данных из базы……………………………………………………………………………………. 554
Обновление структуры базы данных……………………………………………………………………. 555
Android SQLite API…………………………………………………………………………………………………………………… 555
SQLiteOpenHelper и SQLiteDatabase………………………………………………………………………………. 555
Создание и выполнение запросов…………………………………………………………………………………… 555
Курсоры базы данных…………………………………………………………………………………………………….. 557
Написание кода класса базы данных……………………………………………………………………………………. 558
Написание кода классов Fragment для использования класса DataManager……………………. 562
Запуск приложения Age Database………………………………………………………………………………………….. 565
Итоги…………………………………………………………………………………………………………………………………………. 567
Глава 28. Краткое напутствие перед расставанием…………………………………………………………. 568
Публикация приложения…………………………………………………………………………………………………………. 568
Создайте приложение!…………………………………………………………………………………………………………….. 569
Продолжайте учиться……………………………………………………………………………………………………………… 569
Продолжайте читать……………………………………………………………………………………………………….. 569
GitHub……………………………………………………………………………………………………………………………….. 570
Stack Overflow…………………………………………………………………………………………………………………… 570
Форумы пользователей Android……………………………………………………………………………………… 572
Обучение более высокого уровня…………………………………………………………………………………… 572
Каналы связи с автором………………………………………………………………………………………………………….. 572
До свидания и спасибо!…………………………………………………………………………………………………………… 573
Предметный указатель……………………………………………………………………………………………………………… 574
Джон Хортон — энтузиаст программирования и игр из Великобритании. У него страсть к написанию приложений, игр, книг и статей в блогах. Он является основателем Game Code School.
-
Разработка Android-приложений с нуля. 3 изд.
1680 ₽
1428 ₽