Опубликовано

Научитесь создавать приложения для Android с нуля!

Разработка Android-приложений с нуля

Вышла книга “Разработка 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.

Добавить комментарий