Android. Программирование для профессионалов. Третье издание

Брайан Харди Билл Филлипс

Обложка:


Оглавление
9
Создание нового субкласса активности
..................................................................
117
Объявление активностей в манифесте
...................................................................
117
Добавление кнопки Cheat в QuizActivity
.................................................................
118
Запуск активности
.......................................................................................................
120
Передача информации через интенты
...................................................................
121
Передача данных между активностями
.......................................................................
122
Дополнения интентов
............................................................................................
123
Получение результата от дочерней активности
.....................................................
126
Ваши активности с точки зрения Android
.....................................................................
131
Упражнение. Лазейка для мошенников
.......................................................................
134
Глава
6.
Версии Android SDK и совместимость
...............................................
135
Версии Android SDK
.....................................................................................................
135
Совместимость и программирование Android
...............................................................
136
Разумный минимум
................................................................................................
136
Минимальная версия SDK
......................................................................................
138
Целевая версия SDK
..............................................................................................
138
Версия SDK для компиляции
..................................................................................
139
Безопасное добавление кода для более поздних версий API
..................................
139
Документация разработчика Android
...........................................................................
142
Упражнение. Вывод версии построения
......................................................................
144
Упражнение. Ограничение подсказок
..........................................................................
145
Глава
7.
UI-фрагменты и FragmentManager
...................................................
146
Гибкость пользовательского интерфейса
....................................................................
147
Знакомство с фрагментами
..........................................................................................
147
Начало работы над CriminalIntent
................................................................................
149
Создание нового проекта
.......................................................................................
151
Два типа фрагментов
.............................................................................................
152
Добавление зависимостей в Android Studio
............................................................
153
Создание класса Crime
...........................................................................................
155
Хостинг UI-фрагментов
...............................................................................................
157
Жизненный цикл фрагмента
..................................................................................
157
Два способа организации хостинга
........................................................................
158
Определение контейнерного представления
..........................................................
159
Создание UI-фрагмента
...............................................................................................
160
Определение макета CrimeFragment
......................................................................
160
Создание класса CrimeFragment
.............................................................................
163
Реализация методов жизненного цикла фрагмента
................................................
164
Добавление UI-фрагмента в FragmentManager
............................................................
168
Транзакции фрагментов
........................................................................................
169
FragmentManager и жизненный цикл фрагмента
....................................................
172
Архитектура приложений с фрагментами
....................................................................
173
Почему все наши активности используют фрагменты
............................................
173
Для любознательных: фрагменты и библиотека поддержки
........................................
174
Для любознательных: почему фрагменты из библиотеки поддержки лучше
................
176
10
Оглавление
Глава
8.
Вывод списков и RecyclerView
..........................................................
177
Обновление уровня модели CriminalIntent
...................................................................
178
Синглеты и централизованное хранение данных
...................................................
178
Абстрактная активность для хостинга фрагмента
........................................................
181
Обобщенный макет для хостинга фрагмента
.........................................................
181
Абстрактный класс активности
..............................................................................
182
Использование абстрактного класса
......................................................................
183
RecyclerView, Adapter и ViewHolder
..............................................................................
186
ViewHolder и Adapter
..............................................................................................
187
Использование RecyclerView
..................................................................................
189
Отображаемое представление
...............................................................................
192
Реализация адаптера и ViewHolder
........................................................................
193
Связывание с элементами списка
................................................................................
196
Щелчки на элементах списка
......................................................................................
198
Для любознательных: ListView и GridView
....................................................................
198
Для любознательных: синглеты
..................................................................................
199
Упражнение. ViewType и RecyclerView
..........................................................................
200
Глава
9.
Создание пользовательских интерфейсов с использованием
макетов и виджетов
.........................................................................................
201
Использование графического конструктора
.................................................................
202
Знакомство с ConstraintLayout
.....................................................................................
202
Использование ConstraintLayout
.............................................................................
203
Графический редактор
...........................................................................................
205
Освобождение пространства
..................................................................................
206
Добавление виджетов
...........................................................................................
209
Внутренние механизмы ConstraintLayout
................................................................
211
Редактирование свойств
........................................................................................
212
Динамическое поведение элемента списка
............................................................
215
Подробнее об атрибутах макетов
................................................................................
216
Плотности пикселов, dp и sp
..................................................................................
216
Поля и отступы
......................................................................................................
218
Стили, темы и атрибуты тем
..................................................................................
218
Рекомендации по проектированию интерфейсов Android
.......................................
220
Графический конструктор макетов
..............................................................................
220
Упражнение. Форматирование даты
............................................................................
220
Глава
10.
Аргументы фрагментов
...................................................................
221
Запуск активности из фрагмента
.................................................................................
221
Включение дополнения
.........................................................................................
222
Чтение дополнения
...............................................................................................
223
Обновление представления CrimeFragment данными Crime
....................................
224
Недостаток прямой выборки
..................................................................................
225
Аргументы фрагментов
...............................................................................................
226
Присоединение аргументов к фрагменту
...............................................................
226
Получение аргументов
...........................................................................................
227
Оглавление
11
Перезагрузка списка
...................................................................................................
228
Получение результатов с использованием фрагментов
...............................................
230
Для любознательных: зачем использовать аргументы фрагментов?
............................
231
Упражнение. Эффективная перезагрузка RecyclerView
................................................
232
Упражнение. Улучшение быстродействия CrimeLab
.....................................................
232
Глава
11.
ViewPager
..........................................................................................
233
Создание CrimePagerActivity
.........................................................................................
234
ViewPager и PagerAdapter
.......................................................................................
235
Интеграция CrimePagerActivity
................................................................................
236
FragmentStatePagerAdapter и FragmentPagerAdapter
.....................................................
239
Для любознательных: как работает ViewPager
............................................................
240
Для любознательных: формирование макетов представлений в коде
..........................
242
Упражнение. Восстановление полей CrimeFragment
....................................................
243
Упражнение. Добавление кнопок для перехода в начало и конец списка
....................
243
Глава
12.
Диалоговые окна
.............................................................................
244
Создание DialogFragment
.............................................................................................
245
Отображение DialogFragment
.................................................................................
248
Назначение содержимого диалогового окна
..........................................................
249
Передача данных между фрагментами
........................................................................
252
Передача данных DatePickerFragment
....................................................................
253
Возвращение данных CrimeFragment
......................................................................
254
Назначение целевого фрагмента
...........................................................................
255
Упражнение. Новые диалоговые окна
.........................................................................
261
Упражнение. DialogFragment
.......................................................................................
261
Глава
13.
Панель инструментов
......................................................................
262
AppCompat
..................................................................................................................
262
Использование библиотеки AppCompat
..................................................................
263
Использование AppCompatActivity
..........................................................................
264
Меню
..........................................................................................................................
264
Определение меню в XML
......................................................................................
265
Создание меню
......................................................................................................
270
Реакция на выбор команд
......................................................................................
273
Включение иерархической навигации
.........................................................................
274
Как работает иерархическая навигация
.................................................................
275
Альтернативная команда меню
...................................................................................
275
Переключение текста команды
..............................................................................
277
«Да, и еще кое-что...»
...........................................................................................
279
Для любознательных: панели инструментов и панели действий
..................................
281
Упражнение. Удаление преступлений
..........................................................................
281
Упражнение. Множественное число в строках
.............................................................
282
Упражнение. Пустое представление для списка
..........................................................
282
Глава
14.
Базы данных SQLite
.........................................................................
283
Определение схемы
....................................................................................................
283
Построение исходной базы данных
.............................................................................
285
12
Оглавление
Работа с файлами в Android Device Monitor
............................................................
287
Решение проблем при работе с базами данных
......................................................
288
Изменение кода CrimeLab
............................................................................................
290
Запись в базу данных
..................................................................................................
291
Использование ContentValues
.................................................................................
291
Вставка и обновление записей
...............................................................................
292
Чтение из базы данных
...............................................................................................
294
Использование CursorWrapper
................................................................................
295
Преобразование в объекты модели
........................................................................
297
Для любознательных: другие базы данных
.................................................................
300
Для любознательных: контекст приложения
...............................................................
300
Упражнение. Удаление преступлений
..........................................................................
301
Глава
15.
Неявные интенты
.............................................................................
302
Добавление кнопок
.....................................................................................................
303
Добавление подозреваемого в уровень модели
...........................................................
304
Форматные строки
......................................................................................................
306
Использование неявных интентов
...............................................................................
307
Строение неявного интента
...................................................................................
308
Отправка отчета
....................................................................................................
309
Запрос контакта у Android
......................................................................................
311
Получение данных из списка контактов
.................................................................
313
Проверка реагирующих активностей
.....................................................................
315
Упражнение. ShareCompat
...........................................................................................
317
Упражнение. Другой неявный интент
..........................................................................
317
Глава
16.
Интенты при работе с камерой
.......................................................
318
Место для хранения фотографий
................................................................................
318
Внешнее хранилище
....................................................................................................
321
Использование FileProvider
....................................................................................
322
Выбор места для хранения фотографии
.................................................................
323
Использование интента камеры
.............................................................................
324
Отправка интента
..................................................................................................
324
Масштабирование и отображение растровых изображений
.........................................
327
Объявление функциональности
...................................................................................
330
Упражнение. Вывод увеличенного изображения
.........................................................
330
Упражнение. Эффективная загрузка миниатюры
.........................................................
331
Глава
17.
Двухпанельные интерфейсы
..........................................................
332
Гибкость макета
..........................................................................................................
333
Модификация SingleFragmentActivity
......................................................................
334
Создание макета с двумя контейнерами фрагментов
.............................................
335
Использование ресурса-псевдонима
......................................................................
336
Создание альтернативы для планшета
..................................................................
337
Активность: управление фрагментами
........................................................................
339
Интерфейсы обратного вызова фрагментов
...........................................................
340
Реализация CrimeListFragment.Callbacks
.................................................................
340
Оглавление
13
Для любознательных: подробнее об определении размера экрана
..............................
348
Упражнение. Удаление смахиванием
...........................................................................
349
Глава
18.
Локализация
.....................................................................................
350
Локализация ресурсов
.................................................................................................
351
Ресурсы по умолчанию
..........................................................................................
354
Отличия в плотности пикселов
..............................................................................
356
Проверка покрытия локализации в Translations Editor
............................................
356
Региональная локализация
....................................................................................
357
Тестирование нестандартных локальных контекстов
.............................................
359
Конфигурационные квалификаторы
............................................................................
360
Приоритеты альтернативных ресурсов
..................................................................
361
Множественные квалификаторы
............................................................................
363
Поиск наиболее подходящих ресурсов
...................................................................
364
Исключение несовместимых каталогов
..................................................................
364
Перебор по таблице приоритетов
..........................................................................
364
Тестирование альтернативных ресурсов
.....................................................................
365
Упражнение. Локализация дат
....................................................................................
366
Глава
19.
Доступность
......................................................................................
367
TalkBack
......................................................................................................................
367
Explore by Touch
.....................................................................................................
369
Линейная навигация смахиванием
.........................................................................
370
Чтение не-текстовых элементов
..................................................................................
371
Добавление описаний контента
.............................................................................
372
Включение фокусировки виджета
..........................................................................
374
Создание сопоставимого опыта взаимодействия
.........................................................
375
Использование надписей для передачи контекста
.................................................
377
Для любознательных: Accessibility Scanner
..................................................................
379
Упражнение. Улучшение списка
..................................................................................
382
Упражнение. Предоставление контекста для ввода данных
.........................................
382
Упражнение. Оповещения о событиях
.........................................................................
382
Глава
20.
Привязка данных и MVVM
...............................................................
384
Другие архитектуры: для чего?
...................................................................................
385
Создание приложения BeatBox
....................................................................................
385
Простая привязка данных
......................................................................................
387
Импортирование активов
............................................................................................
391
Получение информации об активах
.............................................................................
393
Подключение активов для использования
...................................................................
395
Установление связи с данными
...................................................................................
398
Создание ViewModel
....................................................................................................
399
Связывание с ViewModel
........................................................................................
400
Отслеживаемые данные
.........................................................................................
403
Обращение к активам
.................................................................................................
405
Для любознательных: подробнее о привязке данных
..................................................
406
Лямбда-выражения
................................................................................................
406
Оглавление
15
Г
лава
24.
Подробнее об интентах и задачах
..................................................
463
Создание приложения NerdLauncher
............................................................................
464
Обработка неявного интента
.......................................................................................
466
Создание явных интентов на стадии выполнения
........................................................
470
Задачи и стек возврата
...............................................................................................
472
Переключение между задачами
.............................................................................
473
Запуск новой задачи
..............................................................................................
474
Использование NerdLauncher в качестве домашнего экрана
........................................
477
Упражнение. Значки
....................................................................................................
478
Для любознательных: процессы и задачи
...................................................................
478
Для любознательных: параллельные документы
.........................................................
481
Глава
25.
HTTP и фоновые задачи
..................................................................
483
Создание приложения PhotoGallery
.............................................................................
484
Основы сетевой поддержки
.........................................................................................
487
Разрешение на работу с сетью
...............................................................................
488
Использование AsyncTask для выполнения в фоновом потоке
.....................................
489
Главный программный поток
.......................................................................................
491
Кроме главного потока
..........................................................................................
492
Загрузка XML из Flickr
..................................................................................................
493
Разбор текста в формате JSON
..............................................................................
497
От AsyncTask к главному потоку
..................................................................................
500
Уничтожение AsyncTask
...............................................................................................
503
Для любознательных: подробнее об AsyncTask
............................................................
504
Для любознательных: альтернативы для AsyncTask
.....................................................
505
Упражнение. Gson
.......................................................................................................
506
Упражнение. Страничная навигация
...........................................................................
506
Упражнение. Динамическая настройка количества столбцов
.......................................
507
Глава
26.
Looper, Handler и HandlerThread
.....................................................
508
Подготовка RecyclerView к выводу изображений
.........................................................
508
Множественные загрузки
............................................................................................
510
Взаимодействие с главным потоком
............................................................................
511
Создание фонового потока
..........................................................................................
513
Сообщения и обработчики сообщений
.........................................................................
515
Строение сообщения
.............................................................................................
515
Строение обработчика
...........................................................................................
516
Использование обработчиков
................................................................................
516
Передача Handler
...................................................................................................
521
Для любознательных: AsyncTask и потоки
...................................................................
526
Для любознательных: решение задачи загрузки изображений
....................................
527
Для любознательных: StrictMode
.................................................................................
528
Упражнение. Предварительная загрузка и кэширование
.............................................
529
Глава
27.
Поиск
.................................................................................................
530
Поиск в Flickr
...............................................................................................................
531
Использование SearchView
..........................................................................................
535
18
Оглавление
Запрос разрешения во время выполнения
...................................................................
649
Проверка разрешений
...........................................................................................
650
Поиск и вывод изображений
.......................................................................................
654
Упражнение: обоснование разрешений
.......................................................................
656
Упражнение. Индикатор прогресса
..............................................................................
657
Глава
34.
Карты
................................................................................................
658
Импортирование Play Services Maps
.............................................................................
658
Работа с картами в Android
..........................................................................................
658
Получение ключа Maps API
.........................................................................................
659
Создание карты
...........................................................................................................
660
Получение расширенных позиционных данных
......................................................
661
Работа с картой
...........................................................................................................
664
Рисование на карте
...............................................................................................
668
Для любознательных: группы и ключи API
..................................................................
669
Глава
35.
Материальный дизайн
.....................................................................
671
Материальные поверхности
........................................................................................
672
Возвышение и координата Z
........................................................................................
672
Аниматоры списков состояний
...............................................................................
674
Средства анимации
.....................................................................................................
676
Круговое раскрытие
...............................................................................................
676
Переходы между общими элементами
...................................................................
678
Компоненты View
........................................................................................................
681
Карточки
...............................................................................................................
681
Плавающие кнопки действий
.................................................................................
683
Всплывающие уведомления
...................................................................................
684
Подробнее о материальном дизайне
...........................................................................
685
Послесловие
......................................................................................................
686
Последнее упражнение
...............................................................................................
686
Бессовестная самореклама
..........................................................................................
686
Спасибо
......................................................................................................................
687