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

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Познакомьтесь с возможностями программирования Android на языке Kotlin! Множество примеров приложений с четкими объяснениями ключевых концепций и API позволят легко разобраться в самых трудных задачах. Эта книга посвящена прикладным методам разработки приложений на Kotlin, и подойдет для всех версий Android от 5.0 (Lollipop) до 8.1 (Oreo) и выше. Используйте Android Studio для создания приложений, чтобы проверять код на каждом этапе, интегрировать его с другими приложениями, работать с изображениями, воспроизводить аудио и делать многое другое. Каждая глава продумана (и протестирована) так, чтобы вы смогли получить максимум опыта и знания, необходимые для разработки под Android.

Author(s): Филлипс Билл, Стюарт Крис, Марсикано Кристин, Гарднер Брайан
Series: Для профессионалов
Edition: 4
Publisher: Питер
Year: 2021

Language: Russian
Commentary: Vector PDF
Pages: 704
City: СПб.
Tags: Programming; Debugging; GUI; Java; Mobile Development; HTTP; Android; Object-Oriented Programming; SQLite; Geospatial Data; Unit Testing; User Interface; XML; Model-View-Controller; Google Play; Elementary

Благодарности
Изучение Android
Подготовка
Что нового в четвертом издании?
Kotlin vs Java
Как работать с книгой
Структура книги
Упражнения
А вы любознательны?
Типографские соглашения
Версии Android
Необходимые инструменты
Загрузка и установка Android Studio
Загрузка старых версий SDK
Аппаратное обеспечение
Глава 1. Первое Android-приложение
Основы разработки приложения
Создание проекта Android
Навигация в Android Studio
Создание макета пользовательского интерфейса
Иерархия представления
Атрибуты виджетов
Создание строковых ресурсов
Предварительный просмотр макета
От разметки XML к объектам View
Ресурсы и идентификаторы ресурсов
Разработка виджетов
Установка ссылок на виджеты
Назначение слушателей
Уведомления
Выполнение в эмуляторе
Для любознательных: процесс сборки Android‑приложений
Инструменты сборки
Упражнения
Упражнение: настройка уведомления
Глава 2. Android и модель MVC
Создание нового класса
Архитектура «Модель-Представление-Контроллер» и Android
Преимущества MVC
Обновление уровня представления
Обновление уровня контроллера
Добавление значка
Добавление ресурсов в проект
Ссылки на ресурсы в XML
Плотность пикселей
Запуск на устройстве
Упражнение. Добавление слушателя для TextView
Упражнение. Добавление кнопки возврата
Упражнение. От Button к ImageButton
Глава 3. Жизненный цикл activity
Поворот GeoQuiz
Обратные вызовы состояния и жизненного цикла activity
Регистрация событий жизненного цикла activity
Создание сообщений в журнале
Панель LogCat
Анализ жизненного цикла activity на примере
Временная остановка activity
Завершение activity
Поворот activity
Конфигурации устройств и жизненный цикл ресурса
Создание макета для альбомной ориентации
Для любознательных: обновление UI и мультиоконный режим
Для любознательных: уровни регистрации
Упражнение. Предотвращение ввода нескольких ответов
Упражнение. Вывод оценки
Глава 4. Сохранение состояния интерфейса
Добавление зависимостей ViewModel
Добавление ViewModel
Жизненный цикл ViewModel и ViewModelProvider
Добавление данных в ViewModel
Сохранение данных после завершения процесса
Переопределение onSaveInstanceState(Bundle)
Сохраненное состояние экземпляр и записи activity
Сравнение ViewModel и сохраненного состояния экземпляра
Для любопытных: компоненты Jetpack, AndroidX и компоненты архитектуры
Для любопытных: как избежать костылей
Глава 5. Отладка Android-приложений
Исключения и трассировка стека
Диагностика ошибок поведения
Сохранение трассировки стека
Установка точек останова
Особенности отладки Android
Android Lint
Проблемы с классом R
Упражнение. Исследуем Layout Inspector
Упражнение. Profiler
Глава 6. Вторая activity
Подготовка к внедрению второй activity
Создание второй activity
Создание подкласса новой activity
Объявление activity в манифесте
Добавление кнопки CHEAT! в MainActivity
Запуск activity
Передача информации через интенты
Передача данных между activity
Дополнения интентов
Получение результата от дочерней activity
Ваши activity с точки зрения Android
Упражнение. Лазейка для читера
Упражнение. Отслеживание читов по вопросу
Глава 7. Версии Android SDK и совместимость
Версии Android SDK
Совместимость и программирование Android
Разумный минимум
Минимальная версия SDK
Целевая версия SDK
Версия SDK для компиляции
Безопасное добавление кода для более поздних версий API
Jetpack-библиотеки
Документация разработчика Android
Упражнение. Вывод версии Android на устройстве
Упражнение. Ограничение подсказок
Глава 8. UI-фрагменты и FragmentManager
Гибкость пользовательского интерфейса
Знакомство с фрагментами
Начало работы над CriminalIntent
Создание нового проекта
Создание класса Crime
Создание UI-фрагмента
Определение макета CrimeFragment
Создание класса CrimeFragment
Хостинг UI-фрагментов
Определение контейнерного представления
Добавление UI-фрагмента в FragmentManager
Архитектура приложений с фрагментами
Нужно ли использовать фрагменты
Глава 9. Вывод списков и RecyclerView
Добавление нового фрагмента и ViewModel
Жизненный цикл ViewModel с фрагментами
Добавление RecyclerView
Создание макета представления элемента
Реализация ViewHolder
Реализация адаптера для заполнения RecyclerView
Настройка адаптера RecyclerView
Переработка представлений
Очистка элементов связанного списка
Отклик на нажатия
Для любопытных: ListView и GridView
Упражнение: типы View в RecyclerView
Глава 10. Создание интерфейсов с использованием макетов и виджетов
Знакомство с ConstraintLayout
Использование графического конструктора макетов
Использование ConstraintLayout
Освобождение пространства
Добавление виджетов
Внутренние механизмы ConstraintLayout
Редактирование свойств
Динамическое поведение элементов списка
Подробнее об атрибутах макетов
Стили, темы и атрибуты тем
Для любопытных: поля и отступы
Для любопытных: нововведения в ConstraintLayout
Упражнение. Форматирование даты
Глава 11. Базы данных и Room Library
Библиотека компонентов архитектуры Room
Создание базы данных
Определение сущностей
Создание класса базы данных
Определение объекта доступа к данным
Доступ к базе данных с помощью шаблона репозитория
Тестирование запросов
Загрузка тестовых данных
Потоки приложения
Фоновые потоки
Использование LiveData
Наблюдение за LiveData
Упражнение: Ошибка доступа к схеме
Для любопытных: синглтоны
Глава 12. Навигация по фрагментам
Одиночная activity: главный фрагмент
Интерфейсы обратного вызова фрагментов
Замена фрагмента
Аргументы фрагментов
Присоединение аргументов к фрагменту
Получение аргументов
Преобразования LiveData
Обновление базы данных
Использование исполнителя
Привязка записи в базу данных к жизненному циклу фрагмента
Для любознательных: зачем использовать аргументы фрагментов?
Для любознательных: библиотека компонентов архитектуры навигации?
Упражнение. Эффективная перезагрузка RecyclerView
Глава 13. Диалоговые окна
Создание экземпляра DialogFragment
Отображение DialogFragment
Передача данных между фрагментами
Передача данных в DatePickerFragment
Возвращение данных CrimeFragment
Упражнение. Новые диалоговые окна
Панель приложения
Панель приложения AppCompat
Меню
Определение меню в XML
Создание меню
Реакция на выбор команд
Использование Android Asset Studio
Для любознательных: панель приложения/инструментов/действий
Для любознательных: доступ к AppCompat панели приложения
Упражнение. Пустое представление для списка
Глава 15. Неявные интенты
Добавление кнопок
Добавление подозреваемого в уровень модели
Форматные строки
Использование неявных интентов
Строение неявного интента
Отправка отчета
Запрос контакта у Android
Проверка реагирующих activity
Упражнение. Другой неявный интент
Глава 16. Интенты при работе с камерой
Размещение фотографий
Хранилище файлов
Использование FileProvider
Выбор локации фотографии
Использование интента камеры
Отправка интента
Масштабирование и отображение растровых изображений
Объявление функциональности
Упражнение. Вывод увеличенного изображения
Упражнение. Эффективная загрузка миниатюры
Глава 17. Локализация
Локализация ресурсов
Ресурсы по умолчанию
Проверка покрытия локализации в Translations Editor
Региональная локализация
Конфигурационные квалификаторы
Приоритеты альтернативных ресурсов
Множественные квалификаторы
Поиск наиболее подходящих ресурсов
Тестирование альтернативных ресурсов
Для любознательных. Подробнее об определении размеров экрана устройства
Упражнение. Локализация дат
Глава 18. Специальные возможности
Приложение TalkBack
Функция Explore by Touch
Линейная навигация смахиванием
Чтение нетекстовых элементов
Добавление описаний к контенту
Фокусировка на виджетах
Создание сопоставимого опыта взаимодействия
Для любознательных: Accessibility Scanner
Упражнение. Улучшение списка
Упражнение. Предоставление контекста ля ввода данных
Упражнение. Оповещения о событиях
Глава 19. Привязка данных и MVVM
Другие архитектуры: зачем они нужны?
Сравнение моделей представления MVVM и Jetpack-класса ViewModel
Создание приложения BeatBox
Простая привязка данных
Импорт активов
Доступ к активам
Подключение активов для использования
Установление связи с данными
Создание модели представления
Связывание с моделью представления
Отслеживаемые данные
Для любознательных: подробнее о привязке данных
Лямбда-выражения
Синтаксический сахар
BindingAdapter
Для любознательных: LiveData и привязка данных?
Глава 20. Модульное тестирование и воспроизведение звуков
Создание объекта SoundPool
Доступ к активам
Загрузка звуков
Воспроизведение звуков
Зависимости при тестировании
Создание класса теста
Подготовка теста
Настройка тестируемых объектов
Написание тестов
Взаимодействия тестируемых объектов
Обратные вызовы привязки данных
Выгрузка звуков
Для любознательных: интеграционное тестирование
Для любознательных: фиктивные объекты и тестирование
Упражнение. Управление скоростью воспроизведения
Упражнение. Воспроизведение звуков после поворота
Глава 21. Стили и темы
Цветовые ресурсы
Стили
Наследование стилей
Темы
Изменение темы
Добавление цветов в тему
Переопределение атрибутов темы
Исследование тем
Изменение атрибутов кнопки
Для любознательных: подробнее о наследовании стилей
Для любознательных: доступ к атрибутам тем
Глава 22. Графические объекты
Унификация кнопок
Геометрические фигуры
Списки состояний
Списки слоев
Для любознательных: для чего нужны графические объекты XML?
Для любознательных: Mipmap
Для любознательных: девятизонные изображения
Упражнение. Темы кнопок
Глава 23. Подробнее об интентах и задачах
Создание приложения NerdLauncher
Обработка неявного интента
Создание явных интентов на стадии выполнения
Задачи и стек возврата
Переключение между задачами
Запуск новой задачи
Использование NerdLauncher в качестве главного экрана
Для любознательных: процессы и задачи
Для любознательных: параллельные документы
Упражнение. Значки
Глава 24. HTTP и фоновые задачи
Создание приложения PhotoGallery
Основы работы с сетью с помощью Retrofit
Определение интерфейса API
Сборка объекта Retrofit и создание экземпляра API.
Выполнение веб-запроса
Запрос разрешения на работу с сетью
Переход к шаблону репозитория
Получение JSON-данных от Flickr
Десериализация JSON-текста в объекты модели
Работа с сетью после изменения конфигурации
Отображение результатов в RecyclerView
Для любознательных: альтернативные парсеры и форматы данных
Для любознательных: отмена запросов
Для любознательных: управление зависимостями
Упражнение. добавление пользовательского десериализатора Gson
Упражнение. Навигация по страницам
Упражнение. Динамическая настройка количества столбцов
Глава 25. Классы Looper, Handler и HandlerThread
Подготовка RecyclerView к выводу изображений
Подготовка к загрузке через URL
Множественные загрузки
Создание фонового потока
Передача информации о жизненном цикле в поток
Запуск и остановка HandlerThread
Сообщения и обработчики сообщений
Структура сообщения
Структура обработчика
Использование обработчиков
Передача обработчиков
Прослушивание жизненного цикла представления
Сохраненные фрагменты
Поворот и сохранение фрагментов
Выполнять ли сохранение
Для любознательных: решение задачи загрузки изображений
Для любознательных: StrictMode
Упражнение: Наблюдение LiveData у LifecycleOwner
Упражнение. Больше информации о жизненном цикле ThumbnailDownloader
Упражнение. Предварительная загрузка и кэширование
Глава 26. Поиск: SearchView и SharedPreferences
Поиск в Flickr
Использование SearchView
Реакция SearchView на взаимодействия пользователя
Простое сохранение с помощью SharedPreferences
Последний штрих
Редактирование SharedPreferences с помощью Android KTX
Упражнение. Еще одно усовершенствование
Глава 27
. Библиотека WorkManager
Создание класса Worker
Планирование работы
Проверка на наличие новых фотографий
Вывод уведомления пользователю
Управление опросом от пользователя
Глава 28. Широковещательные интенты
Обычные и широковещательные интенты
Отключение уведомлений при открытом приложении
Отправка широковещательных интентов
Создание и регистрация автономного широковещательного приемника
Ограничение широковещательной рассылки
Создание и регистрация динамического приемника
Передача и получение данных с упорядоченной широковещательной рассылкой
Приемники и продолжительные задачи
Для любознательных: локальные события
Использование EventBus
Использование RxJava
Для любознательных: ограничения широковещательных приемников
Для любознательных: проверка видимости фрагмента
Глава 29. Веб-серфинг и WebView
И еще один фрагмент данных Flickr
Простой способ: неявные интенты
Сложный способ: WebView
Класс WebChromeClient
Повороты в WebView
Опасности при обработке изменений конфигурации
Сравнение WebView и пользовательского интерфейса
Для любознательных: внедрение объектов JavaScript
Для любознательных: обновления WebView
Упражнение. Пользовательские вкладки Chrome (еще один простой способ)
Упражнение. Использование кнопки «Назад» для работы с историей просмотра
Глава 30. Пользовательские представления и события касания
Создание проекта DragAndDraw
Создание пользовательского представления
Создание класса BoxDrawingView
Обработка событий касания
Отслеживание событий перемещения
Рендеринг внутри onDraw(Canvas)
Для любознательных: GestureDetector
Упражнение. Сохранение состояния
Упражнение. Повороты прямоугольников
Упражнение. Поддержка специальных возможностей
Глава 31. Анимация свойств
Построение сцены
Простая анимация свойств
Свойства преобразований
Выбор интерполятора
Изменение цвета
Одновременное воспроизведение анимаций
Для любознательных: другие API анимации
Устаревшие средства анимации
Переходы
Упражнения
Послесловие
Последнее упражнение
Спасибо вам!