razrabotka-prilozhenij-dlya-android

Для профессионального программирования.

Дейтел П., Дейтел Х., Уолд А. "Android для разработчиков" Питер, 2016 год, 512 стр. (65,5 мб. pdf)

В книге на практике показано как ведется разработка приложений для смартфонов и планшетов Android. Для разработки используется Android Software Development Kit (SDK) и язык программирования Java, также показана разработка приложений в программной среде Android Studio. В книге представлены технологии используемые профессиональными программистами при разработке коммерческих приложений.

Поэтому для результативного чтения и изучения книги необходимы знания объектно-ориентированного программирования и языка Java или (C++, С#, Swift, Objective-C). В главах 2 - 9 показаны примеры полного цикла практической разработки, отладки и тестирования приложений. Подробно рассмотрены функции, графический интерфейс, полный исходный код. Десятая - заключительная глава расскажет о регистрация в Google Play, публикации своих приложений и их монетизации.
ISBN 978-5-496-02371-9

Оглавление.

Требования к аппаратному и программному обеспечению 30
Установка Java Development Kit ODK) 30
Установка пакета Android Studio 31
Ознакомительные версии 31
Настройка Android Studio для вывода номеров строк 32
Отключение свертки кода в Android Studio 33
Android 6 SDK 33
Создание виртуальных устройств Android (AVD) .33
Настройка устройства Android для разработки 34
Как получить примеры кода 35
О средствах разработчика Android 35

Глава 1. Введение в Android 36
1.1. Введение 37
1.2. Android — мировой лидер в области мобильных операционных систем 37
1.3. Особенности Android .38
1.4. Операционная система Android 42
1.4.1. Android 2.2 (Froyo) 43
1.4.2. Android 2.3 (Gingerbread) 44
1.4.3. Android 3.0-3.2 (Honeycomb) 45
1.4.4. Android Ice Cream Sandwich 45
1.4.5. Android 4.1 -4.3 (Jelly Bean) 47
1.4.6. Android 4.4 (KitKat) 48
1.4.7. Android 5.0 и 5.1 (Lollipop) 49
1.4.8. Android 6 (Marshmallow) 51
1.5. Загрузка приложений из Google Play 52
1.6. Пакеты 54
1.7. Android Software Development Kit (SDK) .56
1.8. Краткий обзор объектно-ориентированного программирования 59
1.8.1. Автомобиль как объект 59
1.8.2. Методы и классы 60
1.8.3. Создание экземпляра класса 60
1.8.4. Повторное использование 60
1.8.5. Сообщения и вызовы методов 60
1.8.6. Атрибуты и переменные экземпляра класса 61
1.8.7. Инкапсуляция 61
1.8.8. Наследование 61
1.8.9. Объектно-ориентированный анализ и проектирование 62
1.9. Тестирование приложения Tip Calculator на виртуальном устройстве AVD 62
1.9.1. Запуск приложения Tip Calculator в Android Studio 63
1.9.2. Создание виртуальных устройств Android (AVD) 65
1.9.3. Запуск приложения Tip Calculator на AVD смартфона Nexus 6 67
1.9.4. Выполнение приложения Tip Calculator на устройстве Android 72
1.10. Создание успешных Android-приложений 74
1.11. Ресурсы для разработчиков 76
1.12. Резюме 78

Глава 2. Приложение Welcome 79
2.1. Введение 80
2.2. Обзор применяемых технологий 81
2.2.1. Android Studio 81
2.2.2. Linear Layout, TextView и ImageView 81
2.2.3. XML 82
2.2.4. Ресурсы приложения 82
2.2.5. Доступность 82
2.2.6. Интернационализация 82
2.3. Создание приложения 83
2.3.1. Запуск Android Studio 83
2.3.2. Создание нового проекта 83
2.3.3. Диалоговое окно Create New Project 83
2.3.4. Шаг Target Android Devices 85
2.3.5. Шаг Add and Activity to Mobile 87
2.3.6. Шаг Customize the Activity 88
2.4. Окно Android Studio 89
2.4.1. Окно Project 90
2.4.2. Окна редактора 91
2.4.3. Окно Component Tree 92
2.4.4. Файлы ресурсов приложения 92
2.4.5. Макетный редактор 92
2.4.6. Графический интерфейс по умолчанию 94
2.4.7. Разметка XML для графического интерфейса по умолчанию 94
2.5. Построение графического интерфейса приложения 95
2.5.1. Добавление изображения в проект 95
2.5.2. Добавление значка приложения 97
2.5.3. Замена RelativeLayout на LinearLayout 99
2.5.4. Изменение свойств id и orientation компонента LinearLayout 100
2.5.5. Изменение свойств id и text компонента TextView 101
2.5.6. Настройка свойства textSize компонента TextView — пикселы, независимые от плотности и масштабирования 103
2.5.7. Настройка свойства textColor компонента TextView 105
2.5.8. Настройка свойства gravity компонента TextView 106
2.5.9. Настройка свойства layout:gravity компонента TextView 107
2.5.10. Настройка свойства layoutweight компонента TextView 108
2.5.11. Добавление компонента ImageView для вывода изображения 110
2.5.12. Предварительный просмотр 113
2.6. Выполнение приложения Welcome 115
2.7. Обеспечение доступности приложения 115
2.8. Интернационализация приложения 117
2.8.1. Локализация 117
2.8.2. Имена папок с локализованными ресурсами 117
2.8.3. Добавление папки локализации в проект приложения 118
2.8.4. Локализация строк 118
2.8.5. Тестирование приложения с испанской локализацией в ÄVD 119
2.8.6. Тестирование приложения с испанской локализацией на устройстве 121
2.8.7. TalkBack и локализация 122
2.8.8. Контрольный список локализации 122
2.8.9. Профессиональный перевод 122
2.9. Резюме 122

Глава 3. Приложение Tip Calculator 124
3.1. Введение 125
3.2. Тестирование приложения Tip Calculator 126
3.3. Обзор применяемых технологий 127
3.3.1. Класс Activity 127
3.3.2. Методы жизненного цикла активности 128
3.3.3. Библиотека AppCompat и класс AppCompatActivity 129
3.3.4. Построение представления с использованием компонента GridLayout 130
3.3.5. Создание и настройка графического интерфейса 130
3.3.6. Форматирование чисел в соответствии с локальным контекстом 131
3.3.7. Реализация интерфейса Text Watcher для обработки изменений
в компоненте EditText 131
3.3.8. Реализация интерфейса OnSeekBarChangeListener для обработки изменения позиции ползунка SeekBar 131
3.3.9. Материальные темы 131
3.3.10. Материальный дизайн: рельеф и тени 132
3.3.11. Материальный дизайн: цвета 133
3.3.12. AndroidManifest.xml 134
3.3.13. Поиск в окне свойств 134
3.4. Построение графического интерфейса приложения 134
3.4.1. Основы GridLayout 134
3.4.2. Создание проекта TipCalculator 136
3.4.3. Переключение на GridLayout 136
3.4.4. Добавление компонентов TextView, EditText, SeekBar и Linear Layout 137
3.4.5. Настройка компонентов 141
3.5. Тема по умолчанию и настройка цветов темы 144
3.5.1. Родительские темы 144
3.5.2. Настройка цветов темы 145
3.5.3. Стили и часто используемые значения свойств 148
3.6. Логика приложения 149
3.6.1. Команды package и import 149
3.6.2. Класс MainActivity 151
3.6.3. Переменные класса 151
3.6.4. Переопределение метода onCreate класса Activity 152
3.6.5. Метод calculate класса MainActivity 155
3.6.6. Анонимный внутренний класс, реализующий интерфейс OnSeekBarChangeListener 156
3.6.7. Анонимный внутренний класс, реализующий интерфейс Text Watcher 157
3.7. Файл An droid Man ifest.xml 159
3.7.1. Элемент manifest 160
3.7.2. Элемент application 160
3.7.3. Элемент activity 160
3.7.4. Элемент intent-filter 161
3.8. Резюме 163

Глава 4. Приложение Flag Quiz 165
4.1. Введение 166
4.2. Тестирование приложения Flag Quiz 167
4.2.1. Настройка викторины 168
4.2.2. Ответы на вопросы викторины 170
4.3. Обзор применяемых технологий 172
4.3.1. Меню 172
4.3.2. Фрагменты 173
4.3.3. Методы жизненного цикла фрагментов 174
4.3.4. Управление фрагментами 174
4.3.5. Объекты Preference 175
4.3.6. Папка assets 175
4.3.7. Папки ресурсов 176
4.3.8. Поддержка разных размеров экранов и разрешений 177
4.3.9. Определение размера экрана 177
4.3.10. Вывод временных сообщений 178
4.3.11. Использование обработчика для планирования будущих операций 178
4.3.12. Применение анимации к компонентам 178
4.3.13. Использование ViewAnimationUtils для создания анимации 179
4.3.14. Список цветов состояний 179
4.3.15. Окна AlertDialog 179
4.3.16. Регистрация сообщений 180
4.3.17. Запуск другой активности с использованием явного интента 180
4.3.18. Структуры данных Java 181
4.3.19. Особенности Java SE 7 182
4.3.20. AndroidManifest.xml 183
4.4. Создание проекта, файлов ресурсов и дополнительных классов 183
4.4.1. Создание проекта 183
4.4.2. Шаблон Blank Activity 184
4.4.3. Настройка поддержки Java SE 7 185
4.4.4. Добавление изображений флагов в проект 185
4.4.5. Файл strings.xml и ресурсы форматных строк 186
4.4.6. arrays.xml 187
4.4.7. colors.xml 189
4.4.8. button_text_color.xml 190
4.4.9. Редактирование файла menu_main.xml 191
4.4.10. Создание анимации «качающегося» флага 192
4.4.11. Определение конфигурации приложения в файле preferences.xml 194
4.4.12. Добавление классов SettingsActivity и Settings Activity Fragment в проект 196
4.5. Построение графического интерфейса 197
4.5.1. Макет activity_main.xml для устройств в портретной ориентации 197
4.5.2. Создание макета fragment_main.xml 198
4.5.3. Панель инструментов макетного редактора 204
4.5.4. Макет content_main.xml для планшетов в альбомной ориентации 205
4.6. Класс MainActivity 207
4.6.1. Команды package, import и переменные экземпляров 208
4.6.2. Поля 208
4.6.3. Переопределение метода onCreate 209
4.6.4. Переопределение метода onStart 211
4.6.5. Переопределение метода onCreateOptionsMenu 212
4.6.6. Переопределение метода onOptionsItemSelected 213
4.6.7. Анонимный внутренний класс, реализующий интерфейс OnSharedPreferenceChangeListener 213
4.7. Класс MainActivityFragment 215
4.7.1. Команды package и import 216
4.7.2. Поля 216
4.7.3. Переопределение метода onCreateView 218
4.7.4. Метод updateGuessRows 220
4.7.5. Метод updateRegions 221
4.7.6. Метод resetQuiz 222
4.7.7. Метод loadNextFlag 223
4.7.8. Метод getCountryName 226
4.7.9. Метод animate 226
4.7.10. Анонимный внутренний класс, реализующий интерфейс OnClickListener 228
4.7.11. Метод disableButtons 231
4.8. Класс SettingsActivity 231
4.9. Класс SettingsActivityFragment 232
4.10. AndroidManifest.xml 233
4.11. Резюме 235

Глава 5. Приложение Doodlz 237
5.1. Введение 238
5.2. Тестирование приложения Doodlz на виртуальном устройстве AVD 239
5.3. Обзор применяемых технологий 245
5.3.1. Методы жизненного цикла активности и фрагмента 245
5.3.2. Пользовательские представления 246
5.3.3. Использование SensorManager для прослушивания событий акселерометра 246
5.3.4. Пользовательские реализации DialogFragment 246
5.3.5. Рисование с использованием Canvas, Paint и Bitmap 247
5.3.6. Обработка событий многоточечных касаний и хранение данных линий в объектах Path 248
5.3.7. Сохранение данных на устройстве 248
5.3.8. Поддержка печати и класс PrintHelper из Android Support Library 249
5.3.9. Новая модель разрешения Android 6.0 (Marshmallow) 249
5.3.10. Добавление зависимостей с использованием системы сборки Cradle 250
5.4. Создание проекта и ресурсов 250
5.4.1. Создание проекта 250
5.4.2. Cradle: добавление библиотеки поддержки в проект 250
5.4.3. Файл strings.xml 251
5.4.4. Импортирование значков для команд меню 252
5.4.5. Меню MainActivityFragment 253
5.4.6. Добавление разрешения в файл AndroidManifest.xml 255
5.5. Построение графического интерфейса 256
5.5.1. Макет content_main.xml для MainActivity 256
5.5.2. Макет fragment_main.xml для MainActivity Fragment 256
5.5.3. Макет fragment_color.xml для фрагмента ColorDialogFragment 257
5.5.4. Макет fragment_line_width.xml для фрагмента LineWidthDialogF ragment 261
5.5.5. Добавление класса EraselmageDialogFragment 262
5.6. Класс MainActivity 263
5.7. Класс MainActivityFragment 264
5.7.1. Команды package, import и переменные экземпляров 264
5.7.2. Переопределение метода onCreateView 265
5.7.3. Методы onResume и enableAccelerometerListening 266
5.7.4. Методы onPause и disableAccelerometerListening 267
5.7.5. Анонимный внутренний класс для обработки событий акселерометра 268
5.7.6. Метод confirmErase 270
5.7.7. Переопределение методов onCreateOptionsMenu и onOptionsItemSelected 270
5.7.8. Метод savelmage 272
5.7.9. Переопределенный метод onRequestPermissionsResult 274
5.7.10. Методы getDoodleView и setDialogOnScreen 274
5.8. Класс DoodleView 275
5.8.1. Команды package и import 275
5.8.2. Статические переменные и переменные экземпляров DoodleView 276
5.8.3. Конструктор doodleview 277
5.8.4. Переопределенный метод onSizeChanged 277
5.8.5. Методы clear, setDrawingColor, getDrawingColor, setLineWidth и getLineWidth 278
5.8.6. Переопределенный метод onDraw 279
5.8.7. Переопределенный метод onTouchEvent 280
5.8.8. Метод touchStarted 281
5.8.9. Метод touchMoved 282
5.8.10. Метод touchEnded 283
5.8.11. Метод savelmage 284
5.8.12. Метод printlmage 285
5.9. Класс ColorDialogFragment 286
5.9.1. Переопределенный метод onCreateDialog класса DialogFragment 287
5.9.2. Метод getDoodleFragment 288
5.9.3. Переопределенные методы onAttach и onDetach жизненного цикла фрагмента 288
5.9.4. Анонимный внутренний класс, реализующий интерфейс OnSeekBarChangeListener для обработки событий компонентов SeekBar 289
5.10. Класс LineWidthDialogFragment 290
5.10.1. Метод onCreateDialog 292
5.10.2. Анонимный внутренний класс для обработки событий widthSeekBar 293
5.11. Класс EraselmageDialogFragment 293
5.12. Резюме 295

Глава 6. Приложение Cannon Game 297
6.1. Введение 298
6.2. Тестирование приложения Cannon Game 299
6.3. Обзор применяемых технологий 299
6.3.1. Использование папки ресурсов res/raw 299
6.3.2. Методы жизненного цикла активности и фрагмента 300
6.3.3. Переопределение метода onTouchEvent класса View 300
6.3.4. Добавление звука с помощью SoundPool и AudioManager 300
6.3.5. Покадровая анимация с помощью потоков, SurfaceView и SurfaceHolder 301
6.3.6. Простое обнаружение столкновений 301
6.3.7. Режим погружения 302
6.4. Создание графического интерфейса приложения и файлов ресурсов 302
6.4.1. Создание проекта 303
6.4.2. Настройка темы для удаления заголовка и панели приложения 303
6.4.3. Файл strings.xml 304
6.4.4. Цвета 304
6.4.5. Добавление звуков в приложение 304
6.4.6. Добавление класса MainActivityFragment 305
6.4.7. Редактирование файла activity_main.xml 305
6.4.8. Добавление CannonView в макет fragment_main.xml 306
6.5. Классы приложения 307
6.6. Класс MainActivity 307
6.7. Класс MainActivityFragment 308
6.8. Класс GameElement 309
6.8.1. Поля и конструктор 310
6.8.2. Методы update, draw и playSound 311
6.9. Класс Blocker 311
6.10. Класс Target 312
6.11. Класс Cannon 313
6.11.1. Поля и конструктор 313
6.11.2. Метод align 314
6.11.3. Метод fireCannonball 314
6.11.4. Метод draw 315
6.11.5. Методы getCannonball и removeCannonball 316
6.12. Класс Cannonball 317
6.12.1. Поля и конструктор 317
6.12.2. Методы get Radius, collidesWith, isOnScreen и reverseVelocityX.317
6.12.3. Метод update 319
6.12.4. Метод draw 319
6.13. Класс CannonView Subclass 320
6.13.1. Команды package и import 320
6.13.2. Поля и константы 320
6.13.3. Конструктор 322
6.13.4. Переопределение метода onSizeCb.ar.iged класса View 324
6.13.5. Методы getScreenWidth, getScreenHeight и playSound 325
6.13.6. Метод newGame 325
6.13.7. Метод updatePositions 328
6.13.8. Метод alignAndFireCannonball 329
6.13.9. Метод showGameOverDialog 330
6.13.10. Метод drawGameElements 331
6.13.11. Метод testForCollisions 332
6.13.12. Методы stopGame и releaseResources 334
6.13.13. Реализация методов SurfaceHolder.Callback 334
6.13.14. Переопределение метода onTouchEvent 335
6.13.15. Поток CannonThread: использование потока для создания цикла игры 336
6.13.16. Методы hideSystemBars и showSy stem Bars 338
6.14. Резюме 339

Глава 7. Приложение WeatherViewer 341
7.1. Введение 342
7.2. Тестирование приложения WeatherViewer 343
7.3. Обзор применяемых технологий 343
7.3.1. Веб-сервисы 343
7.3.2. Формат JSON и пакет org.json 346
7.3.3. HttpUrlConnection и обращение к REST-совместимым веб-сервисам 348
7.3.4. Использование AsyncTask для обработки сетевых запросов вне потока GUI 348
7.3.5. ListView, Array Adapter и паттерн View-Holder 349
7.3.6. FloatingActionButton 350
7.3.7. Компонент TextlnputLayout 351
7.3.8. Компонент Snackbar 351
7.4. Создание графического интерфейса приложения и файлов ресурсов 352
7.4.1. Создание проекта 352
7.4.2. AndroidManifest.xml 352
7.4.3. strings.xml 353
7.4.4. c-olors.xml 353
7.4.5. activity_main.xml 354
7.4.6. content_main.xml 354
7.4.7. list._it.em xml 355
7.5. Класс Weather 358
7.5.1. Команды package, import и переменные экземпляров 358
7.5.2. Конструктор 359
7.5.3. Метод convertTimeStampToDay 360
7.6. Класс WeatherArrayAdapter 361
7.6.1. Команды package и import 361
7.6.2. Вложенный класс ViewHolder 362
7.6.3. Переменные экземпляров и конструктор 362
7.6.4. Переопределенный метод getView 363
7.6.5. Субкласс AsyncTask для загрузки изображений в отдельном потоке 365
7.7. Класс MainActivity 367
7.7.1. Команды package и import класса MainActivity 367
7.7.2. Переменные экземпляров 368
7.7.3. Переопределенный метод onCreate 368
7.7.4. Методы dismissKeyboard и createURL 370
7.7.5. Субкласс AsyncTask для обращения к веб-сервису 371
7.7.6. Метод convertJSONtoArrayList 373
7.8. Резюме 374

Глава 8. Приложение Twitter Searches 376
8.1. Введение 377
8.2. Тестирование приложения 378
8.2.1. Добавление нового запроса 379
8.2.2. Просмотр результатов поиска 380
8.2.3. Редактирование запроса 381
8.2.4. Пересылка запроса 382
8.2.5. Удаление запроса 384
8.2.6. Прокрутка списка сохраненных запросов 385
8.3. Обзор применяемых технологий 386
8.3.1. Хранение пар «ключ—значение» в файле SharedPreferences 386
8.3.2. Неявные интенты и выбор интентов 386
8.3.3. RecyclerView 387
8.3.4. RecyclerView.Adapter и RecyclerView.ViewHolder 388
8.3.5. RecyclerView.ItemDecoration 388
8.3.6. Отображение списка команд в AlertDialog 388
8.4. Создание графического интерфейса приложения и файлов ресурсов 389
8.4.1. Создание проекта 389
8.4.2. AndroidManifestxml 389
8.4.3. Добавление библиотеки RecyclerView 389
8.4.4. colors.xml 390
8.4.5. strings.xml 390
8.4.6. arrays.xml 391
8.4.7. dimens.xml 391
8.4.8. Добавление значка для кнопки сохранения 391
8.4.9. activity_main.xml 392
8.4.10. content_main.xml 393
8.4.11. Макет элемента RecyclerView: list_item.xml 396
8.5. Класс MainActivity 397
8.5.1. Команды package и import 397
8.5.2. Поля MainActivity 398
8.5.3. Переопределенный метод onCreate 399
8.5.4. Обработчик событий Text Watcher и метод updateSaveFAB 402
8.5.5. Слушатель OnClickListener 403
8.5.6. Метод addTaggedSearch 404
8.5.7. Анонимный внутренний класс, реализующий View.OnClickListener для вывода результатов поиска 405
8.5.8. Анонимный внутренний класс, реализующий интерфейс View. OnLongClickListener для пересылки, изменения и удаления запросов 406
8.5.9. Метод shareSearch 408
8.5.10. Метод deleteSearch 410
8.6. Класс SearchesAdapter 411
8.6.1. Команды package, import, переменные экземпляров и конструктор 411
8.6.2. Вложенный класс ViewHolder 412
8.6.3. Переопределенные методы Recycler View. Adapter 413
8.7. Класс ItemDivider 414
8.8. Fabric: новая платформа мобильной разработки 416
8.9. Резюме 416

Глава 9. Приложение Address Book 418
9.1. Введение 419
9.2. Тестирование приложения Address Book 420
9.2.1. Добавление контакта 421
9.2.2. Просмотр контакта 422
9.2.3. Изменение контакта 422
9.2.4. Удаление контакта 423
9.3. Обзор применяемых технологий 423
9.3.1. Отображение фрагментов с использованием FragmentTransaction 424
9.3.2. Передача данных между фрагментом и управляющей активностью 424
9.3.3. Работа с базой данных SQLite 425
9.3.4. Классы ContentProvider и Content Resolver 425
9.3.5. Loader и LoaderManager — асинхронные операции
с базами данных 426
9.3.6. Определение и применение стилей к компонентам GUI 427
9.3.7. Определение фона для компонентов TextView 428
9.4. Создание графического интерфейса пользователя и файлов ресурсов 428
9.4.1. Создание проекта 428
9.4.2. Создание классов приложения 428
9.4.3. Добавление значков 430
9.4.4. strings.xml 430
9.4.5. styles.xml 431
9.4.6. Файл textview_border.xml 432
9.4.7. Макет MainActivity 433
9.4.8. Макет ContactsFragment 435
9.4.9. Макет DetailFragment 436
9.4.10. Макет AddEditFragment 437
9.4.11. Меню DetailFragment 439
9.5. Обзор классов этой главы 440
9.6. Класс DatabaseDescription 441
9.6.1. Статические поля 442
9.6.2. Вложенный класс Contact 442
9.7. Класс AddressBookDatabaseHelper 443
9.8. Класс AddressBookContentProvider 445
9.8.1. Поля AddressBookContentProvider 445
9.8.2. Переопределенные методы onCreate и getTvpe 447
9.8.3. Переопределенный метод query 448
9.8.4. Переопределенный метод insert 451
9.8.5. Переопределенный метод update 452
9.8.6. Переопределенный метод delete 454
9.9. Класс MainActivity 455
9.9.1. Суперкласс, реализованные интерфейсы и поля 455
9.9.2. Переопределенный метод onCreate класса MainActivity 456
9.9.3. Методы ContactsFragment.ContactsFragment 457
9.9.4. Метод displayContact класса MainActivity 458
9.9.5. Метод display AddEditFragment класса MainActivity 459
9.9.6. Методы DetailFragment.DetailFragmentListener 460
9.9.7. Метод AddEditFragmentAddEditFragmentListener 461
9.10. Класс ContactsFragment 462
9.10.1. Суперкласс и реализуемые интерфейсы 462
9.10.2. ContactsFragment 463
9.10.3. Поля 463
9.10.4. Переопределенный метод onCreateView 463
9.10.5. Переопределенные методы onAttach и onDetach 465
9.10.6. Переопределенный метод onActivityCreated 465
9.10.7. Метод updateContactList 466
9.10.8. Методы LoaderManager.LoaderCallbacks<Cursor> 466
9.11. Класс ContactsAdapter 468
9.12. Класс AddEditFragment 471
9.12.1. Суперкласс и реализуемый интерфейс 471
9.12.2. Интерфейс AddEditFragmentListener 472
9.12.3. Поля 472
9.12.4. Переопределенные методы onAttach, onDetach и onCreateView 473
9.12.5. nameChangedListener и метод updateSaveButtonFAB 475
9.12.6. saveContactButtonClicked и метод saveContact 476
9.12.7. Методы LoaderManager.LoaderCallbacks<Cursor> 478
9.13. Класс DetailFragment 479
9.13.1. Суперкласс и реализуемый интерфейс 479
9.13.2. Интерфейс DetailFragmentListener 480
9.13.3. Переменные экземпляров DetailFragment 481
9.13.4. Переопределенные методы onAttach, onDetach и onCreateView 481
9.13.5. Переопределенные методы onCreateOptionsMenu и onOptionsItemSelected 482
9.13.6. Метод deleteContact и фрагмент confirmDelete 483
9.13.7. Методы LoaderManager.LoaderCallback<Cursor> 484
9.14. Резюме 486

Глава 10. Google Play и коммерческие аспекты разработки 488
10.1. Введение 489
10.2. Подготовка приложений к публикации 489
10.2.1. Тестирование приложения 490
10.2.2. Лицензионное соглашение 490
10.2.3. Значки и метки 490
10.2.4. Контроль версии приложения 492
10.2.5. Лицензирование для управления доступом к платным приложениям 492
10.2.6. Маскировка кода 492
10.2.7. Получение закрытого ключа для цифровой подписи 492
10.2.8. Снимки экрана 493
10.2.9. Информационный видеоролик 494
10.3. Цена приложения: платное или бесплатное? 495
10.3.1. Платные приложения 496
10.3.2. Бесплатные приложения 497
10.4. Монетизация приложений с помощью встроенной рекламы 498
10.5. Внутренняя продажа виртуальных товаров 499
10.6. Регистрация в Google Play 501
10.7. Создание учетной записи Google Payments 501
10.8. Отправка приложений в Google Play 502
10.9. Запуск Play Store из приложения 504
10.10. Управление приложениями в Google Play 505
10.11. Другие магазины приложений Android 505
10.12. Другие популярные платформы мобильных приложений
и портирование 506
10.13. Маркетинг приложения 507
10.14. Резюме 512

Скачать книгу бесплатно65,5 мб. pdf
Разработка приложений для Android. Видео