Android編程(原書第5版) Android Programming: The Big Nerd Ranch Guide, 5/e
[美]布萊恩·西爾斯(Bryan Sills)、[美]布賴恩·加德納(Brian Gardner)、[美]克莉絲汀斯·馬西卡諾(Kristin Marsicano)、[美]克裏斯·斯圖爾特(Chris Stewart)著,蘭紅譯
- 出版商: 清華大學
- 出版日期: 2025-06-01
- 售價: $714
- 語言: 簡體中文
- ISBN: 7302693455
- ISBN-13: 9787302693451
-
相關分類:
Android
- 此書翻譯自: Android Programming: The Big Nerd Ranch Guide, 5/e (Paperback)
下單後立即進貨 (約4週~6週)
相關主題
商品描述
"本書為英文版《Android Programming》(第5版)的中文翻譯教材。英文版由美國4位在專業培訓機構任職的教師編著,他們以Android訓練營教學課程為基礎,融合多年教學心得編寫而成。該書采用Kotlin編程,以6個Android APP應用案例貫穿全部知識點,是一本面向實戰的 Android 編程**指南。中文版依據中國讀者的學習習慣,結合譯者多年移動應用開發課程的教學經驗和同類教材的編寫經驗翻譯而成,便於中國讀者閱讀、學習和使用。全書共30 章,以6個案例的功能疊代展開。GeoQuiz案例覆蓋本書的第1章-第8章,主要用於學習Android應用的基本組成、activity、界面布局以及顯式intent。學習者還將學習如何無縫處理配置更改。CriminalIntent案例覆蓋本書的第9章-第19章,主要用於學習fragment、list-backed用戶界面、數據庫、菜單、相機調用、隱式intents等內容。 PhotoGallery案例覆蓋本書的第20章-第23章,主要用於學習後臺任務調度、多線程、訪問web服務等知識。DragAndDraw案例覆蓋本書的第24章,主要用於學習如何處理觸摸手勢事件以及如何創建個性化視圖。Sunset案例覆蓋本書的第25章,主要用於學習Android動畫。Coda Pizza案例覆蓋本書的第26章-第29章,主要用於學習Android UI創建的**方法Jetpack Compose,如何利用Jetpack Compose管理應用程序狀態,以及如何使用聲明性框架來描述UI的自我呈現。第30章為本書的總結。教材每章後面配有習題,部分章末還配有“挑戰練習”和“深入學習”,用於鍛煉讀者獨立解決問題的能力。書中代碼全部在Android Studio平臺基於Android 12調試通過。本書可為作為普通高校計算機、軟件工程、物聯網、電信和自動化等專業學生學習Android移動開發的參考教材,也可以作為移動開發從業人員學習基於Kotlin開發Android APP的指導圖書。 "
作者簡介
"布萊恩斯?西爾斯(Bryan Sills),Big Nerd Ranch 解決方案架構師和講師,專註於 Android 開發和 Kotlin 編程,主講 Android 基礎、Kotlin 基礎、高級 Kotlin 和移動測試等課程,是《Android Programming》(第5版)的主要作者。布賴恩?加德納(Brian Gardner),Big Nerd Ranch講師、 Android開發工程師。對**的Android庫有深入研究。克莉絲汀?馬西卡諾(Kristin Marsicano),Big Nerd Ranch高級工程經理、講師、Android開發工程師。克裏斯?斯圖爾特(Chris Stewart),Big Nerd Ranch副總裁,Android開發訓練營講師。"
目錄大綱
目錄
第1章Android開發初體驗
1.1Android開發基礎
1.2創建Android項目
1.3Android Studio使用導航
1.4用戶界面設計
1.4.1視圖層級結構
1.4.2視圖屬性
1.4.3創建字符串資源
1.4.4預覽布局
1.5從布局XML到視圖對象
1.5.1布局與視圖
1.5.2資源與資源ID
1.6關聯視圖
1.6.1引用部件
1.6.2設置監聽器
1.7創建toast提示消息
1.8在模擬器上運行應用
1.9深入學習: Android編譯過程
1.9.1Android編譯過程概述
1.9.2Android編譯工具
1.10關於挑戰練習
1.11挑戰練習: 定制toast消息
第2章交互式用戶界面
2.1創建新類
2.2更新布局
2.3組織用戶界面
2.4添加圖標
2.4.1Android圖形資源
2.4.2在XML文件中引用資源
2.5屏幕像素密度
2.6在物理設備上運行應用
2.7挑戰練習: 為TextView添加監聽器
2.8挑戰練習: 添加後退按鈕
第3章activity生命周期
3.1旋轉GeoQuiz應用
3.2activity狀態與生命周期回調函數
3.3日誌跟蹤activity生命周期
3.3.1生成日誌信息
3.3.2使用Logcat
3.4activity生命周期如何響應用戶操作
3.4.1暫時離開activity
3.4.2結束使用activity
3.4.3旋轉activity
3.5設備配置改變與activity生命周期
3.6深入學習: 創建橫屏模式布局
3.7深入學習: UI刷新與多窗口模式
3.8深入學習: 日誌記錄的級別
3.9挑戰練習: 禁止重復答題
3.10挑戰練習: 答題評分
第4章存儲UI狀態
4.1引入ViewModel依賴
4.2添加ViewModel
4.2.1ViewModel生命周期
4.2.2向ViewModel添加數據
4.3進程銷毀時保存數據
4.4深入學習: Jetpack、AndroidX與架構組件
4.5深入學習: 解決問題要徹底
4.6深入學習: Activity與實例狀態
第5章Android應用的調試
5.1異常與棧跟蹤
5.1.1診斷異常
5.1.2記錄棧跟蹤日誌
5.1.3設置斷點
5.2Android特有的調試工具
5.2.1使用Android Lint
5.2.2編譯問題
5.3挑戰練習: 使用條件斷點
5.4挑戰練習: 探索布局檢查器
5.5挑戰練習: 探索Android性能分析器
第6章Android應用的測試
6.1兩種測試方法
6.2JVM 測試
6.3Espresso和ActivityScenario工具測試
6.4挑戰: 自信
第7章第二個activity
7.1創建第二個activity
7.1.1創建新的activity
7.1.2創建新的Activity子類
7.1.3在manifest配置文件中聲明activity
7.1.4為MainActivity添加CHEAT!按鈕
7.2啟動activity
7.2.1基於Intent的通信
7.2.2顯式Intent與隱式Intent
7.3activity間的數據傳遞
7.3.1使用intent extra
7.3.2從子activity獲取返回結果
7.4Android如何看待activity
7.5深入學習: 關於startActivityForResult
7.6深入學習: Back按鈕與activity生命周期
7.7挑戰練習: 堵住作弊漏洞
7.8挑戰練習: 按題目跟蹤作弊狀態
第8章Android SDK版本與兼容
8.1Android SDK版本
8.1.1合理的最小版本
8.1.2SDK最低版本
8.1.3SDK目標版本
8.1.4SDK編譯版本
8.2Android編程與兼容性問題
8.2.1Jetpack庫
8.2.2使用新版本API後安全添加代碼
8.3使用Android開發者文檔
8.4挑戰: 報告設備的Android版本
8.5挑戰練習: 限制作弊次數
第9章Fragment
9.1UI設計的靈活性需求
9.2了解Fragment
9.3著手開發CriminalIntent
9.3.1項目要求
9.3.2創建新項目
9.4創建Crime數據類
9.5創建Fragment
9.5.1定義CrimeDetailFragment布局
9.5.2創建CrimeDetailFragment類
9.6托管Fragment
9.6.1定義FragmentContainerView
9.6.2FragmentManager
9.6.3Fragment生命周期
9.6.4Fragment與內存管理
9.7挑戰練習: 用FragmentScenario來測試
第10章使用RecyclerView顯示列表
10.1添加新Fragment和ViewModel
10.1.1ViewModel添加與Gradle同步
10.1.2ViewModel生命周期與Fragment
10.2添加RecyclerView
10.3LayoutManager實現
10.4創建列表項視圖布局
10.5ViewHolder實現
10.6Adapter實現填充RecyclerView
10.6.1創建Adapter
10.6.2為RecyclerView配置Adapter
10.7循環使用視圖
10.8清理列表項綁定
10.9響應單擊
10.10Lists and Grids: 過去、現在和未來
10.11深入學習: 帶ListAdapter的智能Adapter
10.12挑戰練習: RecyclerView視圖類型
第11章使用布局和視圖創建用戶界面
11.1ConstraintLayout簡介
11.2布局編輯器簡介
11.3使用ConstraintLayout
11.3.1視圖尺寸設置
11.3.2添加視圖
11.3.3約束的工作原理
11.3.4編輯屬性
11.3.5動態設置列表項
11.4樣式、主題和主題屬性
11.5深入學習: 邊距與內邊距
11.6深入學習: ConstraintLayout高級功能
11.7挑戰練習: 日期格式化
第12章協程與數據庫
12.1Android異步代碼簡介
12.1.1使用協程
12.1.2協程中的數據使用
12.2創建數據庫
12.2.1Room架構組件庫
12.2.2定義實體
12.2.3創建數據庫類
12.2.4創建類型轉換器
12.2.5定義數據庫訪問對象
12.3使用倉庫模式訪問數據庫
12.4導入預填充數據
12.5查詢數據庫
12.6儲存數據流的變化
12.7挑戰練習: 解決schema警告
12.8深入學習: 單例singleton
第13章Fragment Navigation
13.1執行Navigation
13.1.1Navigation組件庫實現
13.1.2導航到詳細信息屏幕
13.1.3向Fragment傳送數據
13.2單向數據流
13.3更新數據庫
13.4深入學習: 更好用的列表預覽
13.5挑戰練習: 無標題Crime的處理
第14章對話框和DialogFragment
14.1創建DialogFragment
14.1.1DialogFragment簡介
14.1.2顯示DialogFragment
14.2Fragment間的數據傳遞
14.2.1傳遞數據給DatePickerFragment
14.2.2返回數據給CrimeDetailFragment
14.2.3設置Fragment結果
14.3挑戰練習: 更多對話框
第15章應用欄
15.1默認應用欄
15.2應用欄菜單
15.2.1在XML文件中定義菜單
15.2.2創建菜單
15.2.3響應菜單項選擇
15.3深入學習: 應用欄、操作欄和工具欄
15.4深入學習: 訪問AppCompat應用欄
15.5挑戰練習: RecyclerView空視圖
15.6挑戰練習: 刪除Crime
第16章隱式Intent
16.1添加按鈕
16.2添加suspect屬性
16.3使用格式化字符串
16.4使用隱式Intent
16.4.1隱式Intent的組成
16.4.2發送Crime報告
16.4.3獲取聯系人信息
16.4.4檢查可響應任務的activity
16.5挑戰練習: 第二個隱式Intent
第17章使用Intent拍照
17.1布置照片
17.2文件存儲
17.2.1使用FileProvider
17.2.2指定圖片位置
17.3使用相機Intent
17.4縮放和顯示位圖
17.5功能聲明
17.6挑戰練習: 優化照片顯示
第18章應用本地化
18.1資源本地化
18.1.1默認資源
18.1.2使用翻譯編輯器檢查資源本地化
18.1.3區域限定符
18.2配置限定符
18.2.1備選資源優先級
18.2.2多重配置限定符
18.2.3尋找最匹配的資源
18.3測試備選資源
18.4深入學習: 確定設備尺寸
18.5挑戰練習: 日期顯示本地化
第19章易用性與輔助功能
19.1TalkBack
19.1.1觸摸瀏覽
19.1.2線性導航
19.2通過TalkBack使非文本元素可讀
19.2.1添加內容描述
19.2.2實現視圖可聚焦
19.3提升輔助體驗
19.4深入學習: 在模擬器中使用TalkBack
19.5深入學習: 使用輔助功能掃描器
19.6挑戰練習: 優化列表項
19.7挑戰練習: 補全上下文信息
19.8挑戰練習: 事件通知
第20章網絡請求與圖像顯示
20.1創建PhotoGallery應用
20.2Retrofit網絡基礎
20.2.1定義Retrofit API接口
20.2.2構建Retrofit對象並創建API實例
20.2.3執行網絡請求
20.2.4請求網絡權限
20.2.5使用倉庫模式
20.3從Flickr獲取JSON數據
20.3.1將JSON文本反序列化為模型對象
20.3.2出錯處理
20.4跨配置更改建立網絡
20.5在RecyclerView中顯示結果
20.5.1RecyclerView配置
20.5.2顯示圖像
20.6深入學習: 管理依賴項
20.7挑戰練習: 分頁
第21章搜索與數據存儲
21.1搜索Flickr網站
21.2使用SearchView
21.2.1SearchView定義
21.2.2響應用戶搜索
21.3用DataStore實現輕量級數據存儲
21.4定義UI狀態
21.5挑戰練習: 進一步完善應用
第22章WorkManager
22.1創建Worker類
22.2Worker調度
22.3檢查新圖片
22.4通知用戶
22.5輪詢服務的用戶控制
第23章網頁瀏覽與WebView
23.1最後一段Flickr數據
23.2簡單方式: 使用隱式Intent
23.3較難方式: 使用WebView
23.3.1使用WebView類顯示UI
23.3.2使用WebChromeClient優化WebView
23.4WebView與定制UI
23.5深入學習: WebView升級
23.6深入學習: Chrome Custom Tabs
23.7挑戰練習: 使用Back按鈕瀏覽歷史網頁
第24章定制視圖與觸摸事件
24.1創建DragAndDraw項目
24.2創建自定義視圖
24.3處理觸摸事件
24.3.1監聽觸摸事件
24.3.2跟蹤運動事件
24.4onDraw(Canvas)函數內的圖形繪制
24.5深入學習: 檢測手勢
24.6挑戰練習: 保存狀態
24.7挑戰練習: 旋轉方框
24.8挑戰練習: 輔助功能支持
第25章屬性動畫
25.1創建場景
25.2簡單屬性動畫
25.2.1視圖轉換屬性
25.2.2使用不同的interpolator
25.2.3色彩漸變
25.3播放多個動畫
25.4深入學習: 其他動畫API
25.4.1傳統動畫工具
25.4.2過渡框架
25.5挑戰練習
第26章Jetpack Compose簡介
26.1創建Compose項目
26.2編寫第一個Compose UI
26.3Compose布局
26.4Composable函數
26.5Composable預覽
26.6定制Composable
26.6.1聲明Composable函數的輸入
26.6.2對齊一行中的元素
26.6.3指定文本樣式
26.7Compose Modifier
26.7.1padding Modifier
26.7.2鏈接Modifier與Modifier排序
26.7.3clickable Modifier
26.7.4調整Composable的大小
26.7.5指定Modifier參數
26.8用Composable構建屏幕
26.9用LazyColumn實現滾動列表
26.10深入學習: live literals
第27章Jetpack Compose中UI的狀態
27.1UI狀態的原理
27.2定義UI狀態
27.3用MutableState更新UI
27.4Recomposition重組
27.5remember()函數
27.6狀態提升
27.7狀態與配置變化
27.8深入學習: Coroutines,Flow與 Compose
27.9深入學習: 滾動狀態
27.10深入學習: Compose布局檢查
第28章使用Jetpack Compose顯示對話框
28.1Compose中的第一個對話框
28.2關閉對話框
28.3設置對話框內容
28.4從對話框發回結果
28.5挑戰練習: 披薩的大小和下拉菜單
第29章Compose UI主題
29.1圖像
29.1.1圖像contentDescription
29.1.2添加更多圖像
29.1.3定制Image composable
29.1.4添加LazyColumn標頭
29.2MaterialTheme主題
29.3Scaffold和TopAppBar
29.4CompositionLocal
29.5刪除AppCompat
29.6深入學習: Accompanist
29.7深入學習: 創建自己的Composition
29.8挑戰練習: Animation