Учебник Android
Изучение Android 22
Предварительные условия 22
Что нового во втором издании? 23
Как работать с книгой 23
Структура книги 24
Упражнения 24
А вы любознательны? 25
Стиль программирования 25
Версии Android 25
Необходимые инструменты 25
Загрузка и установка Android Studio 26
Загрузка старых версий SDK 26
Альтернативный эмулятор 26
Физическое устройство 27
От издательства 27
Глава 1. Первое приложение Android 28
Основы построения приложения 29
Создание проекта Android 29
Навигация в Android Studio 33
Построение макета пользовательского интерфейса 34
Иерархия представлений 38
Атрибуты виджетов 39
android:layout_width и android:layout_height 39
android:orientation 39
android:text 39
Создание строковых ресурсов 40
Предварительный просмотр макета 41
От разметки XML к объектам View 41
Ресурсы и идентификаторы ресурсов 43
Подключение виджетов к программе 45
Назначение слушателей 47
Анонимные внутренние классы 48
Уведомления 49
Автозавершение 50
Выполнение в эмуляторе 51
Для любознательных: процесс построения приложений Android 54
Средства построения программ Android 55
Глава 2. Android и модель MVC 57
Создание нового класса 58
Генерирование get- и set-методов 58
Архитектура «Модель-Представление-Контроллер» и Android 61
Преимущества MVC 62
Обновление уровня представления 62
Обновление уровня контроллера 65
Запуск на устройстве 69
Подключение устройства69
Настройка устройства для разработки 69
Добавление значка 71
Добавление ресурсов в проект 72
Ссылки на ресурсы в XML 75
Упражнения 76
Упражнение. Добавление слушателя для TextView 76
Упражнение. Добавление кнопки возврата 77
Упражнение. От Button к ImageButton 77
Глава 3. Жизненный цикл активности 79
Регистрация событий жизненного цикла Activity 80
Использование LogCat 82
Повороты и жизненный цикл активности 85
Конфигурации устройств и альтернативные ресурсы 86
Создание макета для альбомной ориентации86
Сохранение данных между поворотами 90
Переопределение onSaveInstanceState(Bundle) 91
Снова о жизненном цикле Activity 92
Для любознательных: тестирование onSaveInstanceState(Bundle) 93
Для любознательных: методы и уровни регистрации 94
Глава 4. Отладка приложений Android 96
Исключения и трассировка стека 97
Диагностика ошибок поведения 98
Сохранение трассировки стека 99
Установка точек прерывания 101
Прерывания по исключениям 104
Особенности отладки Android 105
Android Lint 105
Проблемы с классом R 107
Глава 5. Вторая активность 109
Создание второй активности 110
Создание нового макета 110
Создание нового субкласса активности 114
Добавление кнопки Cheat в QuizActivity 115
Запуск активности 117
Передача информации через интенты 117
Интенты явные и неявные 119
Передача данных между активностями 119
Дополнения интентов 119
Получение результата от дочерней активности 123
Передача результата 124
Возвращение интента 125
Обработка результата 127
Ваши активности с точки зрения Android 128
Упражнение 131
Глава 6. Версии Android SDK и совместимость 132
Версии Android SDK 132
Совместимость и программирование Android 133
Разумный минимум 134
Минимальная версия SDK 135
Целевая версия SDK 135
Версия SDK для построения 136
Безопасное добавление кода для более поздних версий API 136
Документация разработчика Android 139
Упражнение. Вывод версии построения 141
Глава 7. UI-фрагменты и FragmentManager 142
Гибкость пользовательского интерфейса 143
Начало работы над CriminalIntent 145
Создание нового проекта 147
Фрагменты и библиотека поддержки 148
Добавление зависимостей в Android Studio 150
Создание класса Crime 153
Хостинг UI-фрагментов 154
Жизненный цикл фрагмента 154
Два способа организации хостинга 155
Определение контейнерного представления 155
Создание UI-фрагмента 157
Определение макета CrimeFragment 157
Создание класса CrimeFragment 158
Реализация методов жизненного цикла фрагмента 159
Подключение виджетов во фрагменте 161
Добавление UI-фрагмента в FragmentManager 162
Транзакции фрагментов 163
FragmentManager и жизненный цикл фрагмента 165
Архитектура приложений с фрагментами 166
Почему все наши активности используют фрагменты 167
Для любознательных: почему фрагменты из библиотеки поддержки лучше 168
Для любознательных: использование встроенной реализации фрагментов 169
Глава 8. Макеты и виджеты
Обновление Crime 170
Обновление макета 171
Подключение виджетов 173
Подробнее об атрибутах макетов XML 175
Стили, темы и атрибуты тем 175
Плотность пикселов, dp и sp 175
Рекомендации по проектированию интерфейсов Android 177
Параметры макета 177
Поля и отступы 178
Использование графического конструктора 179
Создание альбомного макета 180
Добавление нового виджета 181
Редактирование атрибутов в свойствах 182
Реорганизация виджетов в дереве компонентов 182
Обновление параметров макета потомков 184
Как работает android:layout_weight185
Графический конструктор макетов 186
Идентификаторы виджетов и множественные макеты 186
Упражнение. Форматирование даты 187
Глава 9. Вывод списков и ListFragment 188
Обновление уровня модели CriminalIntent 189
Синглеты и централизованное хранение данных 189
Абстрактная активность для хостинга фрагмента 192
Обобщенный макет для хостинга фрагмента 192
Использование абстрактного класса 195
Создание новых контроллеров 195
Объявление CrimeListActivity 196
RecyclerView, Adapter и ViewHolder 197
ViewHolder и Adapter 199
Адаптеры 200
Использование RecyclerView 201
Реализация адаптера и ViewHolder 203
Настройка элементов списка 206
Создание макета элемента списка 207
Использование нового представления элемента списка 208
Щелчки на элементах списка 210
Для любознательных: ListView и GridView 212
Для любознательных: синглеты 212
Глава 10. Аргументы фрагментов 214
Запуск активности из фрагмента 214
Включение дополнения 216
Чтение дополнения 216
Обновление представления CrimeFragment данными Crime 217
Недостаток прямой выборки 218
Аргументы фрагментов 219
Присоединение аргументов к фрагменту 219
Получение аргументов 221
Перезагрузка списка 221
Получение результатов с использованием фрагментов 223
Для любознательных: зачем использовать аргументы фрагментов? 225
Глава 11. ViewPager 226
Создание CrimePagerActivity 227
ViewPager и PagerAdapter 228
Интеграция CrimePagerActivity 229
FragmentStatePagerAdapter и FragmentPagerAdapter 232
Для любознательных: как работает ViewPager 234
Для любознательных: формирование макетов представлений в коде 235
Глава 12. Диалоговые окна 237
Библиотека AppCompat 238
Создание DialogFragment 239
Отображение DialogFragment 242
Назначение содержимого диалогового окна 243
Передача данных между фрагментами 245
Передача данных DatePickerFragment 246
Возвращение данных CrimeFragment 248
Назначение целевого фрагмента 249
Передача данных целевому фрагменту 249
Больше гибкости в представлении DialogFragment 253
Упражнение. Новые диалоговые окна 254
Упражнение. DialogFragment255
Глава 13. Панель инструментов 257
AppCompat 258
Использование библиотеки AppCompat 258
Обновление темы 258
Использование AppCompatActivity 259
Меню 261
Определение меню в XML 261
Пространство имен app 263
Android Asset Studio 263
Создание меню 266
Реакция на выбор команд 269
Включение иерархической навигации 270
Как работает иерархическая навигация 271
Альтернативная команда меню 271
Переключение текста команды 273
«Да, и еще одно…»275
Для любознательных: панели инструментов и панели действий 277
Упражнение. Удаление преступлений 278
Упражнение. Множественное число в строках 278
Упражнение. Пустое представление для списка278
Глава 14. Базы данных SQLite 279
Определение схемы 280
Построение исходной базы данных 281
Решение проблем при работе с базами данных 284
Изменение кода CrimeLab 285
Запись в базу данных 286
Использование ContentValues 286
Чтение из базы данных 289
Использование CursorWrapper 290
Преобразование в объекты модели 292
Обновление данных модели 294
Для любознательных: другие базы данных 295
Для любознательных: контекст приложения296
Упражнение. Удаление преступлений 297
Глава 15. Неявные интенты 298
Добавление кнопок 299
Добавление подозреваемого в уровень модели 301
Форматные строки 303
Использование неявных интентов 304
Строение неявного интента 305
Отправка отчета 306
Запрос контакта у Android 308
Получение данных из списка контактов 310
Разрешения контактов 311
Проверка реагирующих активностей 312
Упражнение. ShareCompat 314
Упражнение. Другой неявный интент 314
Глава 16. Интенты при работе с камерой 316
Место для хранения фотографий 316
Включение файлов макетов 317
Внешнее хранилище 319
Выбор места для хранения фотографии 321
Разрешения для работы с внешним хранилищем 323
Отправка интента 324
Масштабирование и отображение растровых изображений 325
Объявление функциональности 329
Для любознательных: использование включений 330
Упражнение. Вывод увеличенного изображения 330
Упражнение. Эффективная загрузка миниатюры 331
Глава 17. Двухпанельные интерфейсы 332
Гибкость макета 333
Модификация SingleFragmentActivity 334
Создание макета с двумя контейнерами фрагментов 335
Использование ресурса-псевдонима 337
Создание альтернативы для планшета 338
Активность: управление фрагментами 339
Интерфейсы обратного вызова фрагментов 340
Реализация CrimeFragment.Callbacks 344
Для любознательных: подробнее об определении размера экрана 349
Глава 18. Активы 350
Почему активы, а не ресурсы 351
Создание приложения BeatBox 351
Импортирование активов354
Подключение активов для использования 358
Обращение к ресурсам 361
Для любознательных: «не-активы»? 362
Глава 19. Воспроизведение аудио с использованием SoundPool 363
Создание объекта SoundPool 363
Загрузка звуков 364
Воспроизведение звуков 366
Выгрузка звуков 368
Повороты и преемственность объектов 368
Удержание фрагмента 370
Повороты и удержание фрагментов 370
Для любознательных: когда удерживать фрагменты 373
Для любознательных: подробнее о поворотах 373
Глава 20. Стили и темы 376
Цветовые ресурсы 377
Стили 377
Наследование стилей 378
Темы 379
Изменение темы 380
Добавление цветов в тему 382
Переопределение атрибутов темы 384
Исследование тем384
Изменение атрибутов кнопки 388
Для любознательных: подробнее о наследовании стилей 390
Для любознательных: обращение к атрибутам тем 391
Упражнение. Базовая тема 392
Глава 21. Графические объекты 393
Унификация кнопок 394
Геометрические фигуры 395
Списки состояний 397
Списки слоев 398
Для любознательных: для чего нужны графические объекты XML? 399
Для любознательных: 9-зонные изображения 400
Для любознательных: Mipmap 404
Глава 22. Подробнее об интентах и задачах 407
Создание приложения NerdLauncher 408
Обработка неявного интента 410
Создание явных интентов на стадии выполнения 414
Задачи и стек возврата 416
Переключение между задачами 417
Запуск новой задачи 419
Использование NerdLauncher в качестве домашнего экрана 421
Упражнение. Значки 423
Для любознательных: процессы и задачи 423
Для любознательных: параллельные документы 425
Глава 23. HTTP и фоновые задачи 428
Создание приложения PhotoGallery 430
Основы сетевой поддержки 432
Разрешение на работу с сетью 434
Использование AsyncTask для выполнения в фоновом потоке 435
Главный программный поток 436
Кроме главного потока 437
Загрузка XML из Flickr 438
Разбор текста в формате JSON 443
От AsyncTask к главному потоку 446
Уничтожение AsyncTask 449
Для любознательных: подробнее об AsyncTask 450
Для любознательных: альтернативы для AsyncTask 451
Упражнение. Gson 452
Упражнение. Страничная навигация 452
Упражнение. Динамическая настройка количества столбцов 453
Глава 24. Looper, Handler и HandlerThread 454
Подготовка RecyclerView к выводу изображений 454
Множественные загрузки 457
Взаимодействие с главным потоком 458
Создание фонового потока 459
Сообщения и обработчики сообщений 462
Строение сообщения 462
Строение обработчика 462
Использование обработчиков 463
Передача Handler 467
Для любознательных: AsyncTask и потоки473
Упражнение. Предварительная загрузка и кэширование 474
Для любознательных: решение задачи загрузки изображений 474
Глава 25. Поиск 476
Поиск в Flickr 477
Использование SearchView 481
Реакция SearchView на взаимодействия с пользователем 484
Простое сохранение с использованием механизма общих настроек 486
Последний штрих 490
Упражнение. Еще одно усовершенствование 491
Глава 26. Фоновые службы 492
Создание IntentService 492
Зачем нужны службы 495
Безопасные сетевые операции в фоновом режиме 495
Поиск новых результатов 497
Отложенное выполнение и AlarmManager 499
Правильное использование сигналов 501
PendingIntent 503
Управление сигналами с использованием PendingIntent 503
Управление сигналом 504
Оповещения 506
Упражнение. Уведомления в Android Wear 509
Для любознательных: подробнее о службах 510
Что делают (и чего не делают) службы 510
Жизненный цикл службы510
Незакрепляемые службы 511
Закрепляемые службы 511
Привязка к службам 512
Локальная привязка к службам 512
Удаленная привязка к службе 513
Для любознательных: JobScheduler и JobServices 513
Для любознательных: синхронизирующие адаптеры 516
Упражнение. Использование JobService в Lollipop 518
Глава 27. Широковещательные интенты 519
Обычные и широковещательные интенты 519
Пробуждение при загрузке 520
Широковещательные приемники в манифесте 520
Использование приемников 523
Фильтрация оповещений переднего плана 525
Отправка широковещательных интентов 525
Создание и регистрация динамического приемника 526
Ограничение широковещательной рассылки 528
Подробнее об уровнях защиты 531
Передача и получение данных с упорядоченной широковещательной рассылкой 532
Приемники и продолжительные задачи 536
Для любознательных: локальные события 537
Использование EventBus 537
Использование RxJava 538
Для любознательных: проверка видимости фрагмента 539
Глава 28. Просмотр веб-страниц и WebView 541
И еще один блок данных Flickr 542
Простой способ: неявные интенты 544
Более сложный способ: WebView 545
Класс WebChromeClient 549
Повороты в WebView 551
Опасности при обработке изменений конфигурации 553
Для любознательных: внедрение объектов JavaScript 553
Для любознательных: переработка WebView в KitKat 554
Упражнение. Использование кнопки Back для работы с историей просмотра 555
Упражнение. Поддержка других ссылок 555
Глава 29. Пользовательские представления и события касания 557
Создание проекта DragAndDraw 558
Создание класса DragAndDrawActivity 558
Создание класса DragAndDrawFragment 558
Создание нестандартного представления 560
Создание класса BoxDrawingView 560
Обработка событий касания 562
Отслеживание перемещений между событиями 564
Рисование внутри onDraw(…) 566
Упражнение. Сохранение состояния 569
Упражнение. Повороты 569
Глава 30. Анимация свойств 570
Построение сцены 570
Простая анимация свойств 573
Свойства преобразований 576
Выбор интерполятора 578
Изменение цвета 578
Одновременное воспроизведение анимаций 580
Для любознательных: другие API-анимации 582
Старые средства анимации 582
Переходы 583
Упражнения 583
Глава 31. Отслеживание местоположения устройства 584
Местоположение и библиотеки 585
Google Play Services 585
Создание Locatr 586
Play Services и тестирование в эмуляторах 586
Фиктивные позиционные данные 588
Построение интерфейса Locatr 589
Настройка Google Play Services 592
Разрешения 593
Использование Google Play Services 594
Геопоиск Flickr 596
Получение позиционных данных 597
Поиск и вывод изображений 600
Упражнение. Индикатор прогресса 602
Глава 32. Карты 603
Импортирование Play Services Maps 603
Работа с картами в Android 603
Настройка Maps API 604
Получение ключа Maps API 604
Ключ подписания 605
Получение ключа API 606
Создание карты 607
Получение расширенных позиционных данных 608
Работа с картой 611
Рисование на карте 614
Для любознательных: группы и ключи API 616
Глава 33. Материальное оформление 619
Материальные поверхности 620
Возвышение и координата Z 621
Аниматоры списков состояний 623
Средства анимации 624
Круговое раскрытие 624
Переходы между общими элементами 626
Компоненты View 630
Карточки 630
Плавающие кнопки действий 632
Всплывающие уведомления 633
Подробнее о материальном оформлении 634
Послесловие 635
Последнее упражнение 635
Бессовестная самореклама 636
Спасибо 636
www.htbook.ru
Книга «Android. Программирование для профессионалов»
Привет, Хаброжители! У нас вышла новая книга:Авторы: Б. Харди, Б. Филлипс, К. Стюарт, К. Марсикано
Второе издание познакомит вас с интегрированной средой разработки Android Studio, которая поможет с легкостью создавать приложения для Android. Вы не только изучите основы програм-мирования, но и узнаете о возможностях Lollipop, новых инструментах вспомогательных библио-тек, а также некоторых ключевых инструментах стандартной библиотеки, включая SoundPool, анимацию и ресурсы. Все учебные приложения были спроектированы таким образом, чтобы про-демонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.
Начинающему программисту Android предстоит основательно потрудиться. Изучение Android — все равно что жизнь в другой стране: даже если вы говорите на местном языке, на первых порах вы все равно не чувствуете себя дома. Такое впечатление, что все окружающие понимают что-то такое, чего вы еще не усвоили. И даже то, что уже известно, в новом контексте оказывается поп-росту неправильным.
У Android существует определенная культура. Носители этой культуры общаются на Java, но знать Java недостаточно. Чтобы понять Android, необходимо изучить много новых идей и приемов. Когда оказываешься в незнакомой местности, полезно иметь под рукой путеводитель.
Здесь на помощь приходим мы. Мы, сотрудники Big Nerd Ranch, считаем, что каждый программист Android должен:
— писать приложения для Android;
- понимать, что он пишет.
Этот учебник поможет вам в достижении обеих целей. Мы обучали сотни профессиональных программистов Android. Мы проведем вас по пути разработки нескольких приложений Android, описывая новые концепции и приемы по мере надобности. Если на пути нам встретятся какие-то трудности, если что-то покажется слишком сложным или нелогичным, мы постараемся объяснить, как возникло такое состояние дел.
Такой подход позволит вам с ходу применить полученные сведения — вместо того, чтобы, накопив массу теоретических знаний, разби-раться, как же их использовать на практике. Перевернув последнюю страницу, вы будете обладать опытом, необходимым для даль-нейшей работы в качестве Android-разработчика.
Предварительные условия
Чтобы использовать эту книгу, читатель должен быть знаком с языком Java, включая такие концепции, как классы и объекты, интер-фейсы, слушатели, пакеты, внутренние классы, анонимные внутренние классы и обобщенные классы.
Без знания этих концепций вы почувствуете себя в джунглях, начиная со второй страницы. Лучше начните с вводного учебника по Java и вернитесь к этой книге после его прочтения. Сейчас имеется много превосходных книг для начинающих; подберите нужный вариант в зависимости от своего опыта программирования и стиля обучения.
Если вы хорошо разбираетесь в концепциях объектно-ориентированного программирования, но успели малость подзабыть Java, скорее всего, все будет нормально. Мы приводим краткие напоминания о некоторых специфических возможностях Java (таких, как интерфейсы и анонимные внутренние классы). Держите учебник по Java наготове на случай, если вам понадобится дополнительная информация во время чтения.
Что нового во втором издании?
Второе издание показывает, как использовать интегрированную среду разработки Android Studio для написания приложений для Android 5.1 (Lollipop), обладающих обратной совместимостью с Android 4.1 (Jelly Bean). Также в нем более подробно изложены основы программирования для Android, рассмотрены новые возможности Lollipop (такие, как панель инструментов и материальный дизайн), новые инструменты вспомогательных библиотек (в числе которых RecyclerView и Google Play Services), а также некоторые ключевые инструменты стандартной библиотеки, включая SoundPool, анимацию и ресурсы.
Как работать с книгой
Эта книга не справочник. Мы старались помочь в преодолении начального барьера, чтобы вы могли извлечь максимум пользы из существующих справочников и сборников рецептов. Книга основана на материалах пятидневного учебного курса в Big Nerd Ranch. Соответственно предполагается, что вы будете читать ее с самого начала. Каждая глава базируется на предшествующем материале, и пропускать главы не рекомендуется.
На наших занятиях студенты прорабатывают эти материалы, но в обучении также задействованы и другие факторы — специальное учебное помещение, хорошее питание и удобная доска, группа заинтересованных коллег и преподаватель, отвечающий на вопросы.
Желательно, чтобы ваша учебная среда была похожа на нашу. В частности, вам стоит хорошенько выспаться и найти спокойное место для работы. Следующие факторы тоже пригодятся:
— Создайте учебную группу с друзьями или коллегами.
— Выделяйте время, когда вы будете заниматься исключительно чтением книги.
— Примите участие в работе форума книги на сайте forums.bignerdranch.com.
— Найдите специалиста по Android, который поможет вам в трудный момент.
Структура книги
В этой книге мы напишем восемь приложений для Android. Два приложения очень просты, и на их создание уходит всего одна глава. Другие приложения часто оказываются более сложными, а самое длинное приложение занимает одиннадцать глав. Все приложения спроектированы так, чтобы продемонстрировать важные концепции и приемы и дать опыт их практического применения.
GeoQuiz — в первом приложении мы исследуем основные принципы создания проектов Android, активности, макеты и явные интенты.
CriminalIntent — самое большое приложение в книге предназначено для хранения информации о проступках ваших коллег по офису. Вы научитесь использовать фрагменты, интерфейсы «главное-детализированное представление», списковые интерфейсы, меню, каме-ру, неявные интенты и многое другое.
BeatBox — наведите ужас на своих врагов, пока вы узнаете больше о фрагментах, воспроизведении мультимедийного контента, темах и графических объектах.
NerdLauncher — нестандартный лаунчер раскроет тонкости работы системы интентов и задач.
PhotoGallery — клиент Flickr для загрузки и отображения фотографий из общедоступной базы Flickr. Приложение демонстрирует работу со службами, многопоточное программирование, обращения к веб-службам и т. д.
DragAndDraw — в этом простом графическом приложении рассматривается обработка событий касания и создание нестандартных представлений.
Sunset — в этом «игрушечном» приложении вы создадите красивое представление заката над водой, а заодно освоите тонкости анимации.
Locatr — приложение позволяет обращаться к сервису Flickr за изображениями окрестностей вашего текущего местонахождения и отображать их на карте. Вы научитесь пользоваться сервисом геопозиционирования и картами.
Упражнения
Многие главы завершаются разделом с упражнениями. Это ваша возможность применить полученные знания, покопаться в докумен-тации и отработать навыки самостоятельного решения задач.Мы настоятельно рекомендуем выполнять упражнения. Возможность сойти с проторенного пути и найти собственный путь закрепит учебный материал и придаст вам уверенности в работе над собственными проектами.
Если же вы окажетесь в тупике, вы всегда сможете обратиться за помощью на форум forums.bignerdranch.com
А вы любознательны?
В конце многих глав также имеется раздел «Для любознательных». В нем приводятся углубленные объяснения или дополнительная информация по темам, представленным в главе. Содержимое этих разделов не является абсолютно необходимым, но мы надеемся, что оно покажется вам интересным и полезным.
Стиль программирования
Существуют два ключевых момента, в которых наши решения отличаются от повсеместно встречающихся в сообществе Android.
Мы используем анонимные классы для слушателей. В основном это дело вкуса. На наш взгляд, код получается более стройным. Реали-зация метода слушателя размещается непосредственно там, где вы хотите ее видеть. В высокопроизводительных приложениях аноним-ные внутренние классы могут создать проблемы, но в большинстве случаев они работают нормально.
После знакомства с фрагментами в главе 7 мы используем их во всех пользовательских интерфейсах. Фрагменты не являются абсолют-но необходимыми, но, на наш взгляд, это ценный инструмент в арсенале любого Android-разработчика. Когда вы освоитесь с фрагмен-тами, работать с ними несложно. Фрагменты имеют очевидные преимущества перед активностями, включая гибкость при построении и представлении пользовательских интерфейсов, так что дело того стоит.
Версии Android
В этой книге программирование для Android рассматривается для всех распространенных версий Android. На момент написания книги это версии Android 4.1 (Jelly Bean) — Android 5.1 (Lollipop). И хотя старые версии Android продолжают занимать некоторую долю рын-ка, на наш взгляд, для большинства разработчиков хлопоты по поддержке этих версий не оправдываются. За дополнительной инфор-мацией о поддержке версий Android, предшествующих 4.1 (особенно Android 2.2 и Android 2.3), обращайтесь к первому изданию книги.
Даже после выхода новых версий Android приемы, изложенные в книге, будут работать благодаря политике обратной совместимости Android (за подробностями обращайтесь к главе 6). На сайте forums.bignerdranch.com будет публиковаться информация об измене-ниях, а также комментарии по поводу использования материала книги с последними версиями.
Более подробно с книгой можно ознакомиться на сайте издательства
Оглавление
Отрывок
Для Хаброжителей скидка 25% по купону — Android Programming
habr.com
Учимся программировать под Андроид / Habr
Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «How To Learn Android Development» от Amit Shekhar.Как изучить разработку приложений под Андроид?
Я видел много вопросов о том, как начать изучать программирование под Андроид и стать успешным разработчиком. Здесь я попытался охватить большинство важных аспектов в Android Development.
Изучение андроид-разработки — процесс, который должен проходить шаг за шагом. И данное руководство — не исключение. Никто не может стать полноценным Андроид-разработчиком за 30 дней. В этой статье также будут представлены лучшие учебники и статьи по разработке Андроид.
Итак, как разработать приложение под Андроид?
Ниже представлены темы, которые, по моему мнению, являются самыми важными для разработки приложений под Андроид:
- Прежде всего, вы должны обладать базовыми знаниями языка Java. В этом мне помогла книга Head-First Java
- Установите Android Studio IDE на свой ПК или ноутбук.
Ссылка автора - Когда вы уже подтянули знания по Java, найдите курс или книгу по разработке под Андроид. Обязательно подкрепляйте пройденное практикой
- Ознакомьтесь с жизненным циклом Андроид-приложения.
Ссылка автора
Ссылка переводчика - Узнайте о том, как отлаживать приложение.
Ссылка автора
Ссылка переводчика - Изучите про навигацию между экранами, tasks и back stack.
Ссылка автора
Ссылка переводчика - Разберитесь с тем, что такое контекст в Андроид.
Ссылка автора
Ссылка переводчика - Прочитайте про SharedPreferences.
Ссылка автора
Ссылка переводчика - RecyclerView в Андроид.
Ссылка автора
Ссылка переводчика - Фрагменты.
Ссылка автора - ViewPager в Андроид.
Ссылка автора
Ссылка переводчика - DialogFragments. Ссылка автора
- Основные потоки.
Ссылка автора
Ссылка переводчика - Сторонние библиотеки.
Ссылка автора
Ссылка переводчика - Работа с сетью в приложении.
Ссылка автора
Ссылка переводчика - БД и ORM(объектно-реляционное отображение).
Ссылка автора
Ссылка переводчика - Службы, сервисы.
Ссылка автора - Датчики, GPS, Acceleration.
Ссылка автора
Ссылка переводчика - Разберитесь, как создать пользовательское представление(view-элемент).
Ссылка автора
Ссылка переводчика - Handler in Android.
Ссылка автора
Ссылка переводчика - ThreadPool Executor.
Ссылка автора
Ссылка переводчика - Уведомления.
Ссылка автора - Загрузчики.
Ссылка автора - Поставщик контента.
Ссылка автора - Обработка изменений в режиме выполнения.
Ссылка автора - RxJava. В настоящее время также используется при разработке под Андроид.
Ссылка автора
Ссылка переводчика - Kotlin.
Ссылка автора
Ссылка переводчика - Dagger.
Ссылка автора
Ссылка переводчика - Архитектура MVP.
Ссылка автора
Ссылка переводчика - Архитектура MVVM.
Ссылка автора
Ссылка переводчика - Показатели производительности.
Ссылка автора - Стиль и правила написания кода.
Ссылка автора
Ссылка переводчика - Аннотации.
Ссылка автора
Ссылка переводчика - Советы по разработке:
Ссылка автора
Ссылка переводчика - Статья про то, как улучшить код аннотациями
- Как уменьшить размер APK-файла.
Ссылка автора
Ссылка переводчика - Оптимизация приложений под Android с помощью ArrayMap и SparseArray.
Ссылка автора
Ссылка переводчика - Git.
Ссылка автора
Хорошего кода 🙂
habr.com
Список литературыГенератор кроссвордовГенератор титульных листовТаблица истинности ONLINEПрочие ONLINE сервисы |
| В нашем каталогеОколостуденческоеЭто интересно…Наши контакты |
spisok-literaturi.ru
Устраняем пробелы, изучаем Android / Habr
Речь пойдёт не о пробелах в знаниях, но об этом чуть позже.По старой привычке я по-прежнему читаю книги по программированию в бумажном варианте. В частности, про разработку под Android. Несколько лет назад с литературой по этой тематике на великом и могучем была напряжёнка. Сейчас положение немного выправилось. Я купил и прочитал, наверное, 99% всех выпущенных книг. Есть две проблемы с книгами. Первая — они однотипны в своей массе и рассказывают об одном и том же. Вторая проблема — значительная задержка в выпуске издания. Как правило, запаздывание происходит на 1-2 версии, что бывает достаточно критичным. Например, когда появились версии Android 3.0 и 4.0 с фрагментами, читать примеры создания приложений под Android 2.3 было глупо.
В далёком 2011 году вышла книга Android за 24 часа, которая, на мой взгляд, была одной из лучших. Мне понравился подход к раскрытию темы — брался один сквозной проект и постепенно усложнялся от часа к часу. Попутно объяснялись фундаментальные вещи на одном проекте. Было понятно, где и когда применять те или иные возможности.
На прошлой неделе случайно наткнулся в интернете на сообщение, что вышло новое издание с более длинным названием Создание приложений для Android за 24 часа с теми же авторами. И немедленно выпил купил.
При покупке меня немного смутило, что на обложке красовалась надпись 3-е издание. Видимо, отсчёт идёт от зарубежных изданий. Ладно, не будем придираться.
На этот раз авторы отказались от прежнего подхода и стали писать как все. Один час, одна тема, один проект. Затем всё по новой. В середине книге они временно вернулись к старому способу, когда в течение 4 уроков объясняли новые темы на примере одного проекта.
Начал читать. Уже к сороковой странице встретились две опечатки:
Прошли те времена, когда за подобное можно было и «партбилет на стол положить». Я общался с людьми, которые в советское время работали в издательском деле и знаю об этом не понаслышке. Теперь опечатками никого не удивишь, а в компьютерной литературе они встречались сплошь и рядом.
Но дальше моё изумление нарастало всё больше и больше.
Моему взору предстало предложение, написанное без единого пробела. Сразу вспомнился школьный немецкий язык, где длинные слова не были редкостью:
Если вы думаете, что была случайность, то вам ещё пример:
На самом деле, отсутствие пробелов встречается постоянно. Как будто, кто-то решил сэкономить на бумаге и сберечь лес. Иногда, в предложении не хватает одного пробела, иногда двух. Иногда их не существует как класса.
Оставим пока пробелы в покое. Обратимся к коду. Кстати, шрифт для кода мне не понравился, какой-то узкий и не слишком читаемый. Но я не шрифтовик, может чего-то не понимаю.
Смотрим на такой код:
Как вам? Две переменные с одинаковыми именами практически рядом. А принцип наименования из одного символа? Чего греха таить, я и сам лет пятнадцать назад в Visual Basic писал в таком же стиле для себя. Сейчас такой подход оправдан, наверное, только в js-библиотеках для уменьшения размера.
Потом авторы исправляются и стали давать кнопкам более осмысленные названия. Но хрен редьки не слаще.
По-моему, во всех современных языках существует негласное правило использовать глаголы для методов-функций.
Но только в этом случае.
Форматирование кода без отступов (борьба с пробелами, вы помните):
Ладно, отступы. Так убрали пробел между именем класса и переменной.
Случайность? Не думаю.
Код без ошибок — это фантастика. Программист не должен слепо копировать текст.
Снова «удачное название кнопки».
Оформление текста.
Методы в Java пишутся с маленькой буквы. Ну это такая мелочь. А вот Word при форматировании заменил их на большие, Word не может ошибаться (одна из версий, почему так произошло).
Но иногда можно сделать исключение и один пункт оставить с маленькой. Действительно, чего я придираюсь.
Таблицы оформлены с любовью, пробелы не пройдут!
Если потихоньку воруем пробелы, то давайте отсыплем читателю одиночных кавычек.
Удивительно, на страницах книги приводятся отрывки из кода, а где посмотреть полные исходники нигде не написано. Никаких упоминаний в книге не нашёл. На сайте российского издательства тоже. Пришлось искать сайт зарубежного издательства, и только там я нашёл ссылку на архив.
На страницах книги встретилась ремарка, что сей труд писался в июне 2013 года. Помните, я говорил об отставании в начале статьи. Это означает, что здесь вы не встретите материалы о Material (каламбур), а также упоминания про Android Studio. Многие начинающие разработчики воспринимают Eclipse и Android Studio как разные и не совместимые языки программирования (!). Не раз встречал подобные заявления на форумах, где люди отказывались изучать пример, если там встречалось слово Eclipse, с утверждением: «Ведь там всё по другому и работать у меня не будет».
Книга оставила у меня двойственное впечатление. С одной стороны, там освещаются интересные темы с использованием API для Flickr и Facebook.
Сдругойсторонывсеэтиопечаткиивойнаспробеламивесьмаозадачиламеня.
Счастливоговампрограммирования!
habr.com