Программирование под Android - Эта книга научит вас всем тонкостям разработки приложений для мобильных устройств, работающих на популярной операционной системе Android. Основанное на учебном курсе известного образовательного IT-проекта Big Nerd Ranch, это издание содержит ключевые концепции программирования в Android, разъяснение API и множество примеров кода и упражнений. В процессе работы с книгой читатель самостоятельно разработает восемь Android-приложений разной сложности и тематики, включая клиент для загрузки фотографий из базы Flickr, приложение, имитирующее телевизионный пульт дистанционного управления, а также сервис геолокации, отслеживающий перемещения пользователя по всему свету и отображающий их на карте. Все учебные приложения были спроектированы таким образом, чтобы продемонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.
Название: Программирование под Android Автор: Брайн Харди, Билл Филлипс Издательство: Питер Год: 2014 Страниц: 592 Формат: PDF Размер: 20,1 МБ ISBN: 978-5-496-00502-9 Качество: Отличное Серия или Выпуск: Для профессионалов Язык: Русский
Содержание:
Благодарности Изучение Android Глава 1. Первое приложение Android Основы построения приложения Создание проекта Android Навигация в Eclipse Построение макета пользовательского интерфейса Иерархия представлений Атрибуты виджетов android: layout_width и android: layout_height android: orientation android: text Создание строковых ресурсов Предварительный просмотр макета От разметки XML к объектам View Ресурсы и идентификаторы ресурсов Подключение виджетов к программе Организация импорта Получение ссылок на виджеты Назначение слушателей Анонимные внутренние классы Уведомления Автозавершение Выполнение в эмуляторе Для любознательных: процесс построения приложений Android Средства построения программ Android Глава 2. Android и MVC Создание нового класса Генерирование get - и set-методов Архитектура «Модель-Представление-Контроллер» и Android Преимущества MVC Обновление уровня представления Обновление уровня контроллера Запуск на устройстве Подключение устройства Настройка устройства для разработки Добавление значка Добавление ресурсов в проект Ссылки на ресурсы в XML Упражнения Упражнение. Добавление слушателя для TextView Упражнение. Добавление кнопки возврата Упражнение. От Button к ImageButton Глава 3. Жизненный цикл Activity Регистрация событий жизненного цикла Activity Создание сообщений в журнале Использование LogCat Повороты и жизненный цикл активности Конфигурации устройств и альтернативные ресурсы Создание макета для альбомной ориентации Сохранение данных между поворотами Переопределение onSaveInstanceState (Bundle) Снова о жизненном цикле Activity Для любознательных: тестирование onSaveInstanceState (Bundle) Для любознательных: методы и уровни регистрации Глава 4. Отладка приложений Android Перспектива DDMS Исключения и трассировка стека Диагностика ошибок поведения Сохранение трассировки стека Установка точек прерывания Прерывания по исключениям File Explorer Особенности отладки Android Android Lint Проблемы с классом R Глава 5. Вторая активность Создание второй активности Создание нового макета Создание нового субкласса активности Объявление активностей в манифесте Добавление кнопки Cheat в QuizActivity Запуск активности Передача информации через интенты Интенты явные и неявные Передача данных между активностями Дополнения интентов Получение результата от дочерней активности Передача результата Возвращение интента Обработка результата Ваши активности с точки зрения Android Упражнение Глава 6. Версии Android SDK и совместимость Версии Android SDK Совместимость и программирование Android Трудности с Honeycomb Минимальная версия SDK (Minimum Required SDK) Целевая версия SDK (Target SDK) Версия SDK для построения (Compile With) Безопасное добавление кода для более поздних версий API Подавление ошибок совместимости Lint Документация разработчика Android Упражнение. Вывод версии построения Глава 7. UI-фрагменты и FragmentManager Гибкость пользовательского интерфейса Знакомство с фрагментами Начало работы над CriminalIntent Создание нового проекта Фрагменты и библиотека поддержки Создание класса Crime Хостинг UI-фрагментов Жизненный цикл фрагмента Два способа организации хостинга Определение контейнерного представления Создание UI-фрагмента Определение макета CrimeFragment Создание класса CrimeFragment Реализация методов жизненного цикла фрагмента Подключение виджетов в фрагменте Добавление UI-фрагмента в FragmentManager Транзакции фрагментов FragmentManager и жизненный цикл фрагмента Почему все наши активности используют фрагменты Для любознательных: разработка для Honeycomb, ICS, Jelly Bean и т. д Глава 8. Макеты и виджеты Обновление Crime Обновление макета Подключение виджетов Подробнее об атрибутах макетов XML Стили, темы и атрибуты тем Плотность пикселов, dp и sp Рекомендации по проектированию интерфейсов Android Параметры макета Поля и отступы Использование графического конструктора Добавление нового виджета Редактирование атрибутов в свойствах Реорганизация виджетов на панели структуры Обновление параметров макета потомков Как работает android: layout_weight Графический конструктор макетов Идентификаторы виджетов и множественные макеты Упражнение. Форматирование даты Глава 9. Вывод списков и ListFragment Обновление уровня модели CriminalIntent Синглеты и централизованное хранение данных Создание ListFragment Абстрактная активность для хостинга фрагмента Обобщенный макет для хостинга фрагмента Абстрактный класс Activity Использование абстрактного класса Объявление CrimeListActivity ListFragment, ListView и ArrayAdapter Создание ArrayAdapter Щелчки на элементах списка Настройка элементов списка Создание макета элемента списка Создание субкласса адаптера Глава 10. Аргументы фрагментов Запуск активности из фрагмента Включение дополнения Чтение дополнения Обновление представления CrimeFragment данными Crime Недостаток прямой выборки Аргументы фрагментов Присоединение аргументов к фрагменту Получение аргументов Перезагрузка списка Получение результата с использованием фрагментов Глава 11. ViewPager Создание CrimePagerActivity Формирование макетов представлений в коде Автономные идентификаторы ресурсов ViewPager и PagerAdapter Интеграция CrimePagerActivity FragmentStatePagerAdapter и FragmentPagerAdapter Для любознательных: как работает ViewPager Глава 12. Диалоговые окна Создание DialogFragment Отображение DialogFragment Назначение содержимого диалогового окна Передача данных между фрагментами Передача данных DatePickerFragment Возвращение данных CrimeFragment Назначение целевого фрагмента Передача данных целевому фрагменту Больше гибкости в представлении DialogFragment Упражнение. Новые диалоговые окна Глава 13. Воспроизведение звука и MediaPlayer Добавление ресурсов Определение макета HelloMoonFragment Сброс темы приложения Создание класса HelloMoonFragment Использование фрагмента макета Воспроизведение аудио Подключение кнопок воспроизведения и остановки Упражнение. Приостановка воспроизведения Для любознательных: воспроизведение видео Упражнение. Воспроизведение видео в HelloMoon Глава 14. Сохранение фрагментов Сохранение фрагмента Повороты и сохраненные фрагменты Сохранение фрагментов: действительно так хорошо? Повороты и onSaveInstanceState (Bundle) Для любознательных: повороты до появления фрагментов Глава 15. Локализация Локализация ресурсов Ресурсы по умолчанию Плотность пикселов и ресурсы по умолчанию Конфигурационные квалификаторы Приоритеты альтернативных ресурсов Множественные квалификаторы Поиск наиболее подходящих ресурсов Исключение несовместимых каталогов Перебор таблицы приоритетов Дополнительные правила использования ресурсов Имена ресурсов Структура каталогов ресурсов Тестирование альтернативных ресурсов Глава 16. Панель действий Командное меню Определение командного меню в XML Использование системных значков Создание командного меню Реакция на выбор команд Включение иерархической навигации Включение значка приложения Обработка кнопки Up Альтернативная команда меню Создание альтернативного файла меню Переключение текста команды «Да, и еще одно…» Упражнение. Пустое представление для списка Глава 17. Сохранение и загрузка локальных файлов Сохранение и загрузка данных в CriminalIntent Сохранение преступлений в файле JSON Создание класса CriminalIntentJSONSerializer Поддержка сериализации JSON в классе Crime Сохранение объектов Crime в CrimeLab Сохранение данных приложения в onPause () Загрузка данных из файловой системы Упражнение. Использование внешнего хранилища Для любознательных: файловая система Android и средства ввода-вывода Java Обращение к файлам и каталогам Глава 18. Контекстные меню и режим контекстных действий Определение ресурса контекстного меню Реализация контекстного меню Создание контекстного меню Регистрация контекстного меню Реакция на действие Реализация режима контекстных действий Множественное выделение Методы обратного вызова режима действий в представлении списка Изменение фона выделенных элементов Реализация режима контекстных действий в других представлениях Совместимость: отход или дублирование? Упражнение. Удаление из CrimeFragment Для любознательных: ActionBarSherlock Упражнение. Использование ActionBarSherlock Базовая интеграция ABS в CriminalIntent Интеграция более высокого уровня Интеграция еще более высокого уровня Глава 19. Камера I: Viewfinder Создание макета фрагмента Создание класса CrimeCameraFragment Создание класса CrimeCameraActivity Включение активности и разрешений камеры в манифест Использование API камеры Открытие и освобождение камеры SurfaceView, SurfaceHolder и Surface Определение размера области предварительного просмотра Запуск CrimeCameraActivity из CrimeFragment Скрытие панели состояния и панели действий Для любознательных: запуск активностей из командной строки Глава 20. Камера II: Съемка и обработка изображений Получение снимка Реализация обратных вызовов камеры Назначение размера изображения Передача данных CrimeFragment Запуск CrimeCameraActivity с возвращением результата Назначение результата в CrimeCameraFragment Получение имени файла в CrimeFragment Обновление уровня модели Добавление класса Photo Включение в Crime свойства для хранения фотографии Сохранение ссылки на фотографию Обновление представления CrimeFragment Добавление ImageView Обработка изображения Добавление масштабированных фотографий в ImageView Выгрузка изображения Отображение полноразмерных изображений в DialogFragment Упражнение. Ориентация изображения в Crime Упражнение. Удаление фотографий Для любознательных: устаревшие конструкции в Android Глава 21. Неявные интенты Добавление кнопок Добавление имени в уровень модели Форматные строки Использование неявных интентов Компоненты неявного интента Отправка отчета Запрос контакта у Android Получение данных из списка контактов Разрешения контактов Проверка реагирующих активностей Упражнение. Другой неявный интент Глава 22. Двухпанельные интерфейсы Гибкость макета Модификация SingleFragmentActivity Создание макета с двумя контейнерами фрагментов Использование ресурса-псевдонима Создание альтернативы для планшета Активность: управление фрагментами Интерфейсы обратного вызова фрагментов Реализация CrimeFragment. Callbacks Для любознательных: подробнее об определении размера экрана Глава 23. Подробнее об интентах и задачах Создание приложения NerdLauncher Обработка неявного интента Создание явных интентов на стадии выполнения Задачи и стек возврата Использование NerdLauncher в качестве домашнего экрана Упражнение. Значки, изменение порядка задач Для любознательных: процессы и задачи Глава 24. Стили и включения Создание проекта RemoteControl Создание RemoteControlActivity Создание RemoteControlFragment Стили и компактность разметки Завершение разметки Для любознательных: include и merge Упражнение. Наследование стилей Глава 25. Графические объекты Графические объекты XML Списки состояний Списки слоев и смещение 9-зонные изображения Глава 26. HTTP и фоновые задачи Создание приложения PhotoGallery Основы сетевой поддержки Разрешение на работу с сетью Использование AsyncTask для выполнения в фоновом потоке Главный программный поток Кроме главного потока Загрузка XML из Flickr Использование XmlPullParser От AsyncTask к главному потоку Для любознательных: подробнее об AsyncTask Уничтожение AsyncTask Упражнение. Страничная навигация Глава 27. Looper, Handler и HandlerThread Подготовка GridView к выводу изображений Множественные загрузки Взаимодействие с главным потоком Создание фонового потока Сообщения и обработчики сообщений Строение сообщения Строение обработчика Использование обработчиков Передача Handler Для любознательных: AsyncTask и потоки Упражнение. Предварительная загрузка и кэширование Глава 28. Поиск Поиск в Flickr Диалоговое окно поиска Создание поискового интерфейса Поисковые активности Аппаратная кнопка поиска Как работает поиск Режимы запуска и новые интенты Простое сохранение с использованием механизма общих настроек Использование SearchView в Android версий выше 3.0 Упражнения Глава 29. Фоновые службы Создание IntentService Зачем нужны службы Безопасные сетевые операции в фоновом режиме Поиск новых результатов Отложенное выполнение и AlarmManager PendingIntent Управление сигналами с использованием PendingIntent Управление сигналом Обновление элемента командного меню Оповещения Для любознательных: подробнее о службах Что делают (и чего не делают) службы Жизненный цикл службы Незакрепляемые службы Закрепляемые службы Привязка к службам Локальная привязка к службам Удаленная привязка к службе Глава 30. Широковещательные интенты Пробуждение при загрузке Широковещательные приемники в манифесте Использование приемников Фильтрация оповещений переднего плана Отправка широковещательных интентов Динамические широковещательные приемники Закрытые разрешения Подробнее об уровнях защиты Получение результатов с упорядоченной широковещательной рассылкой Приемники и продолжительные задачи Глава 31. Просмотр веб-страниц и WebView И еще один блок данных Flickr Простой способ: неявные интенты Более сложный способ: WebView Класс WebChromeClient Повороты в WebView Для любознательных: внедрение объектов JavaScript Глава 32. Пользовательские представления и события касания Создание проекта DragAndDraw Создание класса DragAndDrawActivity Создание класса DragAndDrawFragment Создание нестандартного представления Создание класса BoxDrawingView Обработка событий касания Отслеживание перемещений между событиями Рисование внутри onDraw (…) Упражнение: повороты Глава 33. Отслеживание местоположения устройства Создание приложения RunTracker Создание класса RunActivity Класс RunFragment Добавление строк Файл макета Создание класса RunFragment Местоположение и LocationManager Получение широковещательных обновлений местоположения Обновление пользовательского интерфейса данными местоположения Ускорение отклика: последнее известное местоположение Тестирование на реальных и виртуальных устройствах Глава 34. Локальные базы данных и SQLite Хранение серий и позиций в базе данных Запрос списка серий из базы данных Вывод списка серий с использованием CursorAdapter Создание новых серий Работа с существующими сериями Упражнение: выделение текущей серии Глава 35. Асинхронная загрузка данных Loader и LoaderManager Использование загрузчиков в RunTracker Загрузка списка серий Загрузка одной серии Загрузка последней позиции в серии Глава 36. Карты Добавление Maps API в приложение RunTracker Тестирование на реальном устройстве Установка и использование Google Play services SDK Получение ключа Google Maps API Обновление манифеста RunTracker Вывод местоположения пользователя на карте Вывод маршрута Добавление маркеров начала и конца маршрута Упражнение: оперативное обновление Глава 37. Послесловие Последнее упражнение Бессовестная самореклама Спасибо