Android編程權威指南 第4版 ( 簡體 字) |
作者:[美]克莉絲汀·馬西卡諾(Kristin Marsicano),[美]布賴恩·加德納(Brian Gardner),[美]比爾·菲利普斯(Bill Phillips),[美] 克里 | 類別:1. -> 程式設計 -> 手機程式 -> Android |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 54253 詢問書籍請說出此書號!【缺書】 NT售價: 695 元 |
出版日:3/1/2021 |
頁數:538 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115559647 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:Big Nerd Ranch是美國一家專業的移動開發技術培訓機構。本書主要以其Android訓練營教學課程為基礎,融合了幾位作者多年的心得體會,是一本完全面向實戰的Android 編程權威指南。全書共32章,詳細介紹了七個Android應用的開發過程。通過這些精心設計的應用,讀者可掌握很多重要的理論知識和開發技巧,獲得寶貴的開發經驗。第4版較之前版本做了重大更新,每一章的內容都做了修改;同時,開發語言從Java換成了Kotlin,全面引入了Android Jetpack組件庫并開始使用第三方庫。 |
目錄:第 1 章 Android開發初體驗 1 1.1 Android開發基礎 2 1.2 創建Android項目 2 1.3 Android Studio使用導航 6 1.4 用戶界面設計 7 1.4.1 視圖層級結構 12 1.4.2 部件屬性 12 1.4.3 創建字符串資源 13 1.4.4 預覽布局 14 1.5 從布局XML到視圖對象 16 1.6 部件的實際應用 19 1.6.1 引用部件 20 1.6.2 設置監聽器 20 1.7 創建提示消息 22 1.8 使用模擬器運行應用 24 1.9 深入學習:Android編譯過程 26 1.10 關于挑戰練習 28 1.11 挑戰練習:定制toast消息 28 第 2 章 Android與MVC設計模式 29 2.1 創建新類 30 2.2 Android與MVC設計模式 31 2.3 更新視圖層 33 2.4 更新控制器層 35 2.5 添加圖標資源 38 2.5.1 向項目中添加資源 39 2.5.2 在XML文件中引用資源 41 2.6 屏幕像素密度 41 2.7 在物理設備上運行應用 43 2.8 挑戰練習:為TextView添加監聽器 45 2.9 挑戰練習:添加后退按鈕 45 2.10 挑戰練習:從按鈕到圖標按鈕 46 第 3 章 activity的生命周期 48 3.1 旋轉GeoQuiz應用 48 3.2 activity狀態與生命周期回調 49 3.3 日志跟蹤理解activity生命周期 51 3.3.1 輸出日志信息 51 3.3.2 使用LogCat 53 3.4 activity生命周期如何響應用戶操作 54 3.4.1 暫時離開activity 54 3.4.2 結束使用activity 57 3.4.3 旋轉activity 58 3.5 設備配置改變與activity生命周期 58 3.6 深入學習:UI刷新與多窗口模式 62 3.7 深入學習:日志記錄的級別與函數 62 3.8 挑戰練習:禁止一題多答 63 3.9 挑戰練習:答題評分 63 第 4 章 UI狀態的保存與恢復 64 4.1 引入ViewModel依賴 64 4.2 添加ViewModel 65 4.2.1 ViewModel生命周期與ViewModelProvider 67 4.2.2 向ViewModel添加數據 69 4.3 進程銷毀時保存數據 72 4.3.1 覆蓋onSaveInstanceState(Bundle)函數 73 4.3.2 保留實例狀態與activity記錄 76 4.4 ViewModel與保存實例狀態 77 4.5 深入學習:Jetpack、AndroidX與架構組件 78 4.6 深入學習:解決問題要徹底 79 第 5 章 Android應用的調試 81 5.1 異常與棧跟蹤 82 5.1.1 診斷應用異常 83 5.1.2 記錄棧跟蹤日志 84 5.1.3 設置斷點 85 5.2 Android特有的調試工具 88 5.2.1 使用Android Lint 88 5.2.2 R類的問題 91 5.3 挑戰練習:探索布局檢查器 92 5.4 挑戰練習:探索Android性能分析器 92 第 6 章 第二個activity 93 6.1 創建第二個activity 94 6.1.1 創建新的activity 95 6.1.2 創建新的activity子類 98 6.1.3 在manifest配置文件中聲明activity 98 6.1.4 為MainActivity添加CHEAT!按鈕 99 6.2 啟動activity 100 6.3 activity間的數據傳遞 102 6.3.1 使用intent extra 102 6.3.2 從子activity 獲取返回結果 105 6.4 activity的使用與管理 110 6.5 挑戰練習:堵住作弊漏洞 112 6.6 挑戰練習:按題記錄作弊狀態 112 第 7 章 Android SDK版本與兼容 113 7.1 Android SDK版本 113 7.2 Android編程與兼容性問題 114 7.2.1 比較合理的版本 114 7.2.2 SDK最低版本 115 7.2.3 SDK目標版本 116 7.2.4 SDK編譯版本 116 7.2.5 安全添加新版本API中的代碼 116 7.2.6 JETPACK庫 119 7.3 使用Android開發者文檔 120 7.4 挑戰練習:報告編譯版本 122 7.5 挑戰練習:限制作弊次數 122 第 8 章 UI fragment與fragment管理器 123 8.1 UI設計的靈活性需求 124 8.2 引入fragment 124 8.3 著手開發CriminalIntent 125 8.4 創建Crime數據類 128 8.5 創建UI fragment 129 8.5.1 定義CrimeFragment的布局 129 8.5.2 創建CrimeFragment類 131 8.6 托管UI fragment 137 8.6.1 定義容器視圖 138 8.6.2 向FragmentManager中添加UI fragment 139 8.7 采用fragment的應用架構 143 第 9 章 使用RecyclerView顯示列表 145 9.1 添加新Fragment和ViewModel 146 9.2 添加RecyclerView 149 9.3 創建列表項視圖布局 151 9.4 ViewHolder實現 153 9.5 使用Adapter填充RecyclerView 155 9.6 循環使用視圖 159 9.7 清理綁定 159 9.8 響應點擊 160 9.9 深入學習:ListView與GridView 161 9.10 挑戰練習:RecyclerView的ViewType 162 第 10 章 使用布局與部件創建用戶界面 163 10.1 初識ConstraintLayout布局 164 10.2 圖形布局編輯器 165 10.3 使用ConstraintLayout 168 10.3.1 騰出空間 169 10.3.2 添加部件 171 10.3.3 約束的工作原理 174 10.3.4 編輯屬性 175 10.3.5 動態設置列表項 179 10.4 深入學習布局屬性 180 10.5 深入學習:邊距與內邊距 182 10.6 深入學習:ConstraintLayout的發展動態 183 10.7 挑戰練習:日期格式化 183 第 11 章 數據庫與Room庫 185 11.1 Room架構組建庫 186 11.2 創建數據庫 187 11.2.1 定義實體 187 11.2.2 創建數據庫類 187 11.3 定義數據庫訪問對象 189 11.4 使用倉庫模式訪問數據庫 191 11.5 測試數據庫訪問 193 11.6 應用線程 196 11.7 使用LiveData 198 11.8 挑戰練習:解決Schema警告 203 11.9 深入學習:單例 204 第 12 章 Fragment Navigation 206 12.1 單Activity多Fragment 206 12.1.1 Fragment回調接口 207 12.1.2 替換fragment 209 12.2 Fragment argument 211 12.2.1 將argument附加到fragment 212 12.2.2 獲取argument 213 12.3 使用LiveData數據轉換 214 12.4 更新數據庫 217 12.4.1 使用executor 218 12.4.2 數據庫寫入與fragment生命周期 219 12.5 深入學習:為何要用Fragment Argument 220 12.6 深入學習:Navigation架構組件庫 221 12.7 挑戰練習:實現高效的RecyclerView刷新 222 第 13 章 對話框 223 13.1 創建DialogFragment 224 13.2 fragment間的數據傳遞 227 13.2.1 傳遞數據給DatePickerFragment 228 13.2.2 返回數據給CrimeFragment 230 13.3 挑戰練習:時間選擇對話框 232 第 14 章 應用欄 233 14.1 AppCompat默認應用欄 234 14.2 應用欄菜單 235 14.2.1 在XML文件中定義菜單 235 14.2.2 創建菜單 237 14.2.3 響應菜單項選擇 240 14.3 使用Android Asset Studio 242 14.4 深入學習:應用欄、操作欄與工具欄 244 14.5 深入學習:AppCompat版應用欄 246 14.6 挑戰練習:RecyclerView空視圖 246 第 15 章 隱式intent 247 15.1 添加按鈕部件 248 15.2 添加嫌疑人信息至模型層 249 15.3 使用格式化字符串 250 15.4 使用隱式intent 251 15.4.1 隱式intent的組成 252 15.4.2 發送消息 253 15.4.3 獲取聯系人信息 256 15.4.4 檢查可響應任務的activity 261 15.5 挑戰練習:又一個隱式intent 263 第 16 章 使用intent拍照 264 16.1 布置照片 264 16.2 文件存儲 267 16.2.1 使用FileProvider 268 16.2.2 指定照片存放位置 269 16.3 使用相機intent 270 16.4 縮放和顯示位圖 273 16.5 功能聲明 277 16.6 挑戰練習:優化照片顯示 278 16.7 挑戰練習:優化縮略圖加載 278 第 17 章 應用本地化 279 17.1 資源本地化 279 17.1.1 默認資源 282 17.1.2 檢查資源本地化完成情況 283 17.1.3 區域修飾符 284 17.2 配置修飾符 285 17.2.1 可用資源優先級排定 286 17.2.2 多重配置修飾符 288 17.2.3 尋找最匹配的資源 289 17.3 測試備選資源 290 17.4 深入學習:確定設備屏幕尺寸 290 17.5 挑戰練習:日期顯示本地化 291 第 18 章 Android輔助功能 292 18.1 TalkBack 292 18.1.1 點擊瀏覽 294 18.1.2 線性瀏覽 295 18.2 實現非文字型元素可讀 297 18.2.1 添加內容描述 297 18.2.2 實現部件可聚焦 300 18.3 提升輔助體驗 301 18.4 深入學習:使用輔助功能掃描器 302 18.5 挑戰練習:優化列表項 305 18.6 挑戰練習:補全上下文信息 305 18.7 挑戰練習:事件主動通知 306 第 19 章 數據綁定與MVVM 307 19.1 為何要用MVVM架構 308 19.2 MVVM View Model與Jetpack ViewModel 308 19.3 創建BeatBox應用 308 19.4 實現簡單的數據綁定 309 19.5 導入assets 312 19.6 處理assets 314 19.7 使用assets 316 19.8 綁定數據 318 19.8.1 創建視圖模型 320 19.8.2 綁定至視圖模型 321 19.8.3 綁定數據觀察 323 19.9 深入學習:數據綁定再探 325 19.9.1 lambda表達式 325 19.9.2 更多語法糖 326 19.9.3 BindingAdapter 326 19.10 深入學習:LiveData和數據綁定 327 第 20 章 音頻播放與單元測試 329 20.1 創建SoundPool 329 20.2 訪問Assets 330 20.3 加載音頻文件 330 20.4 播放音頻 332 20.5 測試依賴 332 20.6 創建測試類 333 20.7 配置測試類 335 20.8 編寫測試函數 336 20.9 數據綁定回調 341 20.10 釋放音頻 342 20.11 深入學習:整合測試 343 20.12 深入學習:模擬對象與測試 344 20.13 挑戰練習:播放進度控制 345 20.14 挑戰練習:設備旋轉問題 346 第 21 章 樣式與主題 347 21.1 顏色資源 348 21.2 樣式 348 21.3 主題 351 21.4 添加主題顏色 353 21.5 覆蓋主題屬性 354 21.6 修改按鈕屬性 358 21.7 深入學習:樣式繼承拾遺 361 21.8 深入學習:引用主題屬性 362 第 22 章 XML drawable 363 22.1 統一按鈕樣式 364 22.2 shape drawable 365 22.3 state list drawable 367 22.4 layer list drawable 368 22.5 深入學習:為什么要用XML drawable 370 22.6 深入學習:使用mipmap圖像 370 22.7 深入學習:使用9-patch圖像 371 22.8 挑戰練習:按鈕主題 377 第 23 章 深入學習intent和任務 378 23.1 創建NerdLauncher項目 379 23.2 解析隱式intent 380 23.3 在運行時創建顯式intent 385 23.4 任務與回退棧 386 23.4.1 在任務間切換 387 23.4.2 啟動新任務 388 23.5 用NerdLauncher當主屏幕 391 23.6 深入學習:進程與任務 392 23.7 深入學習:并發文檔 394 23.8 挑戰練習:應用圖標 397 第 24 章 HTTP 與后臺任務 398 24.1 創建PhotoGallery應用 399 24.2 Retrofit網絡連接基本 402 24.2.1 定義Retrofit API接口 403 24.2.2 構建Retrofit對象并創建API實例 403 24.2.3 執行網絡請求 405 24.2.4 獲取網絡使用權限 407 24.2.5 使用倉庫模式聯網 408 24.3 從Flickr 獲取JSON數據 411 24.4 應對設備配置改變 418 24.5 在RecyclerView里顯示結果 421 24.6 深入學習:其他JSON數據解析器和數據格式 423 24.7 深入學習:撤銷網絡請求 423 24.8 深入學習:管理依賴 424 24.9 挑戰練習:自定義Gson反序列化器 425 24.10 挑戰練習:分頁 426 24.11 挑戰練習:動態調整網格列 426 第 25 章 Looper、Handler和HandlerThread 427 25.1 配置RecyclerView以顯示圖片 427 25.2 準備下載數據 430 25.3 批量下載縮略圖 431 25.4 創建后臺線程 431 25.4.1 創建生命周期感知線程 432 25.4.2 啟停HandlerThread 435 25.5 Message與message handler 436 25.5.1 剖析Message 438 25.5.2 剖析Handler 438 25.5.3 使用handler 440 25.5.4 傳遞handler 443 25.6 觀察視圖的生命周期 446 25.7 保留fragment 450 25.7.1 設備旋轉與保留fragment 450 25.7.2 是否保留fragment 452 25.8 深入學習:解決圖片下載問題 452 25.9 深入學習:StrictMode 453 25.10 挑戰練習:觀察視圖LifecycleOwner的LiveData 454 25.11 挑戰練習:優化ThumbnailDownloader 454 25.12 挑戰練習:預加載以及緩存 454 第 26 章 搜索 456 26.1 搜索Flickr網站 457 26.2 使用SearchView 460 26.3 使用sharedpreferences實現輕量級數據存儲 464 26.4 優化應用 467 26.5 用Android KTX編輯SharedPreferences 468 26.6 挑戰練習:優化PhotoGallery應用 469 第 27 章 WorkManager 470 27.1 創建Worker類 470 27.2 調度工作 471 27.3 檢查新圖片 473 27.4 通知用戶 476 27.5 服務的用戶控制 481 第 28 章 broadcast intent 486 28.1 普通intent與broadcast intent 486 28.2 過濾前臺通知 487 28.2.1 發送broadcast intent 487 28.2.2 創建并登記standalone receiver 488 28.2.3 使用私有權限限制broadcast 489 28.2.4 創建并登記動態receiver 491 28.2.5 使用有序broadcast收發數據 493 28.3 receiver與長時運行任務 497 28.4 深入學習:本地事件 497 28.4.1 使用EventBus 498 28.4.2 使用RxJava 499 28.5 深入學習:受限的Broadcast Receiver 499 28.6 深入學習:探測fragment的狀態 500 第 29 章 網頁瀏覽 501 29.1 最后一段Flickr數據 501 29.2 簡單方式:使用隱式intent 503 29.3 較難的方式:使用WebView 504 29.4 處理WebView的設備旋轉問題 511 29.5 WebView與定制UI 512 29.6 深入學習:注入JavaScript對象 512 29.7 深入學習:WebView升級 513 29.8 深入學習:Chrome Custom Tabs 513 29.9 挑戰練習:使用回退鍵瀏覽歷史網頁 514 第 30 章 定制視圖與觸摸事件 515 30.1 創建DragAndDraw項目 515 30.2 創建定制視圖 516 30.3 處理觸摸事件 518 30.4 onDraw(Canvas)函數內的圖形繪制 521 30.5 深入學習:GestureDetector 523 30.6 挑戰練習:設備旋轉問題 523 30.7 挑戰練習:旋轉矩形框 524 30.8 挑戰練習:輔助功能支持 524 第 31 章 屬性動畫 525 31.1 建立場景 525 31.2 簡單屬性動畫 527 31.2.1 視圖轉換屬性 530 31.2.2 使用不同的interpolator 531 31.2.3 色彩漸變 532 31.3 播放多個動畫 534 31.4 深入學習:其他動畫API 536 31.4.1 傳統動畫工具 536 31.4.2 轉場 536 31.5 挑戰練習 536 第 32 章 編后語 537 32.1 終極挑戰 537 32.2 插個廣告 537 32.3 致謝 538 |
序: |