Android編程(原書第5版) Android Programming: The Big Nerd Ranch Guide, 5/e

[美]布萊恩·西爾斯(Bryan Sills)、[美]布賴恩·加德納(Brian Gardner)、[美]克莉絲汀斯·馬西卡諾(Kristin Marsicano)、[美]克裏斯·斯圖爾特(Chris Stewart)著,蘭紅譯

  • Android編程(原書第5版)-preview-1
  • Android編程(原書第5版)-preview-2
  • Android編程(原書第5版)-preview-3
Android編程(原書第5版)-preview-1

相關主題

商品描述

"本書為英文版《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