本書以任務(wù)驅(qū)動的方式,將Android開發(fā)的知識點融入各任務(wù)中,學(xué)習(xí)者可通過臨摹任務(wù)掌握Android開發(fā)技巧。各任務(wù)既保持獨立,又遵循由淺入深、循序漸進的學(xué)習(xí)規(guī)律,適合讀者碎片化學(xué)習(xí),也適合作為高校線上和線下混合式教學(xué)的教材。 本書共7章,分別從開發(fā)環(huán)境以及項目的基本信息、Android的布局與基本UI、列表與適配器、菜單與對話框、多線程與網(wǎng)絡(luò)應(yīng)用、數(shù)據(jù)存儲與內(nèi)容提供、Fragment與導(dǎo)航這7方面講述Android開發(fā)的基本內(nèi)容。本書中的各任務(wù)均通過Android 5.0和Android 10.0測試。 本書可作為全國高等學(xué)校計算機及相關(guān)專業(yè)的教材和相關(guān)培訓(xùn)及培訓(xùn)機構(gòu)的教學(xué)用書,同時也適合作為Android編程愛好者的入門讀物。
(1)任務(wù)驅(qū)動式教學(xué)。各任務(wù)學(xué)習(xí)目標(biāo)明確,將應(yīng)用場景的沉浸與知識點融合,學(xué)習(xí)者通過臨摹各任務(wù),掌握相關(guān)知識和開發(fā)技巧,提高知識靈活應(yīng)用能力。
(2)適合碎片化學(xué)習(xí)。各章任務(wù)盡量保持獨立和代碼完整性,絕大多數(shù)單個任務(wù)學(xué)習(xí)時長在30~60分鐘以內(nèi)完成,有利于初學(xué)者利用閑余時間碎片化學(xué)習(xí),也有利于大學(xué)課程的內(nèi)容組織,開展線上線下混合教學(xué)。
(3)由淺入深,循序漸進。在內(nèi)容安排上,按難易程度合理安排章節(jié)順序,各任務(wù)既保持獨立性,又承上啟下,符合學(xué)習(xí)者學(xué)習(xí)規(guī)律。
(4)注重代碼的解耦和通用性。本書所有案例通過Android 5.0和Android 10.0測試,所寫的部分工具類可直接應(yīng)用于其他Android應(yīng)用的項目開發(fā)。
新一輪科技革命和產(chǎn)業(yè)變革帶動了傳統(tǒng)產(chǎn)業(yè)的升級改造。黨的二十大報告強調(diào)必須堅持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動力,深入實施科教興國戰(zhàn)略、人才強國戰(zhàn)略、創(chuàng)新驅(qū)動發(fā)展戰(zhàn)略,開辟發(fā)展新領(lǐng)域新賽道,不斷塑造發(fā)展新動能新優(yōu)勢。建設(shè)高質(zhì)量高等教育體系是擺在高等教育面前的重大歷史使命和政治責(zé)任。高等教育要堅持國家戰(zhàn)略引領(lǐng),聚焦重大需求布局,推進新工科、新醫(yī)科、新農(nóng)科、新文科建設(shè),加快培養(yǎng)緊缺型人才。
當(dāng)前,國內(nèi)多數(shù)應(yīng)用型人才培養(yǎng)本科院校和?圃盒5挠嬎銠C、軟件工程、電子信息等專業(yè)均會開設(shè)移動開發(fā)相關(guān)課程,而Android開發(fā)占據(jù)移動開發(fā)課程的主流?紤]到高校目前Java課程比Kotlin課程普及度高,盡管Android開發(fā)主推Kotlin語言,本書依然堅持使用Java語言,這是為了更好地銜接現(xiàn)有的課程體系。在內(nèi)容編排上,本書不僅講述Android基礎(chǔ)開發(fā),還特別注重Java知識的滲透,讓讀者通過各任務(wù)的臨摹學(xué)習(xí),掌握數(shù)據(jù)的封裝、接口回調(diào)、類的繼承與改寫、多線程開發(fā)、異步編程、數(shù)據(jù)庫編程、UI交互編程等相關(guān)知識和開發(fā)技巧,以提高Java開發(fā)能力,可作為Java后繼課程的延伸。
本書主要內(nèi)容
第1章開發(fā)環(huán)境及項目的基本信息,介紹Android Studio(2021版)開發(fā)環(huán)境的安裝、虛擬機的設(shè)置,并考慮Intel和AMD CPU的安裝設(shè)置。此外,還介紹開發(fā)項目的結(jié)構(gòu),以及Android Studio開發(fā)過程中常用的快捷鍵。
第2章Android的布局與基本UI,通過9個任務(wù)的講解,使讀者掌握Android開發(fā)中各UI組件如何布局在容器上,著重使用LinearLayout以及布局權(quán)重和布局對齊等特性,并以
相對布局(RelativeLayout)和
約束布局(ConstraintLayout)為補充,涉及文本框(TextView)、可編輯文本框(EditText)、按鈕(Button)、多選框(CheckBox)、單選框(RadioButton)等UI的使用和事件處理。
第3章列表與適配器,通過9個任務(wù)的講解,使讀者掌握批量數(shù)據(jù)的UI顯示方法和事件處理,尤其是下拉列表(Spinner)、列表視圖(ListView)、網(wǎng)格視圖(GridView)以及RecyclerView的使用方法,強調(diào)自定義視圖適配器的靈活應(yīng)用,尤其是適配器的改寫。
第4章菜單與對話框,通過7個任務(wù)的講解,使讀者掌握數(shù)據(jù)在可視化界面下配合菜單與對話框?qū)崿F(xiàn)增、刪、改方法,尤其是選項菜單(OptionsMenu)、上下文菜單(ContextMenu)、彈出菜單(PopupMenu)以及對話框(AlertDialog)的使用方法,強調(diào)自定義接口實現(xiàn)模塊解耦的編程技巧。
第5章多線程與網(wǎng)絡(luò)應(yīng)用,通過9個任務(wù)的講解,使讀者掌握Handler、自定義接口以及LiveData等不同方法實現(xiàn)的后臺線程與前端UI的數(shù)據(jù)交互方法,通過實例驗證數(shù)據(jù)的多線程安全性問題,提高多線程開發(fā)能力。在網(wǎng)絡(luò)應(yīng)用上,引入OkHttp、Gson、RxHttp等第三方庫用于實現(xiàn)基于Web API的JSON數(shù)據(jù)解析與數(shù)據(jù)顯示,并探討Activity多種啟動模式的差異。最后,引入Jsoup第三方庫爬取HTML數(shù)據(jù),自定義適配器異步解析網(wǎng)頁和Glide加載網(wǎng)絡(luò)圖片,實現(xiàn)圖書資訊App的基礎(chǔ)開發(fā)。
第6章數(shù)據(jù)存儲與內(nèi)容提供,通過7個任務(wù)的講解,使讀者掌握SharedPreferences輕量化存儲、Sqlite數(shù)據(jù)庫應(yīng)用以及內(nèi)容提供器組件ContentProvider數(shù)據(jù)讀寫操作、系統(tǒng)相冊讀取、運行時權(quán)限等相關(guān)知識和編程技巧。
第7章Fragment與導(dǎo)航,通過3個任務(wù)的講解,使讀者掌握底部導(dǎo)航、碎片F(xiàn)ragment的使用、Fragment跳轉(zhuǎn)、基于視圖模型的數(shù)據(jù)維持與數(shù)據(jù)傳遞、自定義導(dǎo)航控制Fragment的隱藏與顯示等相關(guān)編程技巧。
本書特色
(1) 任務(wù)驅(qū)動式教學(xué)。各任務(wù)學(xué)習(xí)目標(biāo)明確,將應(yīng)用場景的沉浸與知識點融合,讀者通過臨摹各任務(wù),可掌握相關(guān)知識和開發(fā)技巧,提高知識的靈活應(yīng)用能力。
(2) 適合碎片化學(xué)習(xí)。各章任務(wù)盡可能地保持獨立性和代碼完整性,
有利于初學(xué)者利用閑余時間碎片化學(xué)習(xí),也有利于高校老師開展線上和線下混合式教學(xué)。
(3) 由淺入深,循序漸進。在內(nèi)容安排上按難易程度合理安排章節(jié)順序,各任務(wù)既保持獨立性,又承上啟下,符合讀者的學(xué)習(xí)規(guī)律。
(4) 注重代碼的解耦和通用性。本書中的所有任務(wù)均通過Android 5.0和Android 10.0測試,所寫的部分工具類可直接應(yīng)用于其他Android應(yīng)用的項目開發(fā)。
配套資源
為便于教與學(xué),本書配有微課視頻(1360分鐘)、源代碼、教學(xué)課件、教學(xué)大綱。
(1) 獲取微課視頻的方式: 先刮開并用手機版微信App掃描本書封底的文泉云盤防盜碼,授權(quán)后再掃描書中相應(yīng)的視頻二維碼,觀看教學(xué)視頻。
(2) 獲取源代碼、全書網(wǎng)址的方式: 先刮開并用手機版微信App掃描本書封底的文泉云盤防盜碼,授權(quán)后再掃描下方二維碼,即可獲取。
源代碼
全書網(wǎng)址
(3) 其他配套資源可以掃描本書封底的書圈二維碼,關(guān)注后回復(fù)本書書號即可下載。
讀者對象
本書可作為全國高等學(xué)校計算機及相關(guān)專業(yè)的教材和相關(guān)培訓(xùn)及培訓(xùn)機構(gòu)的教學(xué)用書,同時也適合作為Android編程愛好者的入門讀物。
本書作者在編寫過程中參考了諸多相關(guān)資料,在此對相關(guān)資料的作者表示衷心的感謝。限于個人水平和時間倉促,書中難免存在疏漏之處,歡迎廣大讀者批評指正。
作者
2023年6月
第1章開發(fā)環(huán)境及項目的基本信息
1.1開發(fā)環(huán)境及系統(tǒng)要求
1.2Android Studio的安裝過程
1.3Android Studio虛擬機的設(shè)置
1.4項目的基本信息
1.4.1初步認(rèn)識項目聲明文件AndroidManifest.xml
1.4.2項目的資源引用方式
1.4.3項目的代碼和布局文件
1.4.4項目的Gradle文件
1.5Android Studio的常用快捷鍵
第2章Android的布局與基本UI
2.1按鈕與文本框的互動
2.1.1任務(wù)說明
2.1.2任務(wù)相關(guān)知識點
2.1.3任務(wù)實現(xiàn)
2.1.4Android項目的存儲備份與瘦身
2.1.5Android項目的調(diào)試
2.2控制布局對齊
2.2.1任務(wù)說明
2.2.2任務(wù)相關(guān)知識點
2.2.3任務(wù)實現(xiàn)
2.3控制布局占比權(quán)重
2.3.1任務(wù)說明
2.3.2任務(wù)相關(guān)知識點
2.3.3任務(wù)實現(xiàn)
2.4單選框
2.4.1任務(wù)說明
2.4.2任務(wù)相關(guān)知識點
2.4.3任務(wù)實現(xiàn)
2.5多選框
2.5.1任務(wù)說明
2.5.2任務(wù)實現(xiàn)
2.6獲取并顯示EditText文本
2.6.1任務(wù)說明
2.6.2任務(wù)實現(xiàn)
2.7控制文本顏色以及UI邊距
2.7.1任務(wù)說明
2.7.2任務(wù)實現(xiàn)
2.8相對布局
2.8.1任務(wù)說明
2.8.2任務(wù)實現(xiàn)
2.9約束布局
2.9.1任務(wù)說明
2.9.2任務(wù)相關(guān)知識點
2.9.3任務(wù)實現(xiàn)
2.10本章綜合作業(yè)
第3章列表與適配器
3.1下拉列表
3.1.1任務(wù)說明
3.1.2任務(wù)相關(guān)知識點
3.1.3任務(wù)實現(xiàn)
3.2使用Spinner控制文本顏色
3.2.1任務(wù)說明
3.2.2任務(wù)實現(xiàn)
3.3使用Spinner控制文本大小
3.3.1任務(wù)說明
3.3.2任務(wù)實現(xiàn)
3.4使用ListView切換ImageView圖片
3.4.1任務(wù)說明
3.4.2任務(wù)實現(xiàn)
3.5使用SimpleAdapter生成復(fù)雜視圖
3.5.1任務(wù)說明
3.5.2任務(wù)實現(xiàn)
3.6改寫ArrayAdapter生成復(fù)雜視圖
3.6.1任務(wù)說明
3.6.2任務(wù)實現(xiàn)
3.7使用網(wǎng)格視圖
3.7.1任務(wù)說明
3.7.2任務(wù)實現(xiàn)
3.8列表視圖與網(wǎng)格視圖的動態(tài)切換
3.8.1任務(wù)說明
3.8.2任務(wù)實現(xiàn)
3.9使用RecyclerView
3.9.1任務(wù)說明
3.9.2任務(wù)實現(xiàn)
3.10本章綜合作業(yè)
第4章菜單與對話框
4.1使用選項菜單
4.1.1任務(wù)說明
4.1.2任務(wù)實現(xiàn)
4.2使用上下文菜單
4.2.1任務(wù)說明
4.2.2任務(wù)實現(xiàn)
4.3使用彈出菜單
4.3.1任務(wù)說明
4.3.2任務(wù)實現(xiàn)1: 注冊兩個ContextMenu
4.3.3任務(wù)實現(xiàn)2: 巧用PopupMenu
4.4使用對話框AlertDialog
4.4.1任務(wù)說明
4.4.2任務(wù)實現(xiàn)
4.5使用自定義視圖對話框
4.5.1任務(wù)說明
4.5.2任務(wù)實現(xiàn)
4.6使用對話框?qū)崿F(xiàn)多選
4.6.1任務(wù)說明
4.6.2任務(wù)實現(xiàn)
4.7實現(xiàn)多選適配器與動態(tài)菜單
4.7.1任務(wù)說明
4.7.2針對ListView的多選適配器實現(xiàn)方法
4.7.3針對RecyclerView的多選適配器實現(xiàn)方法
4.8本章綜合作業(yè)
第5章多線程與網(wǎng)絡(luò)應(yīng)用
5.1使用多線程與Handler
5.1.1任務(wù)說明
5.1.2任務(wù)相關(guān)知識點
5.1.3任務(wù)實現(xiàn)
5.1.4驗證變量的線程安全性
5.2使用多線程與自定義接口
5.2.1任務(wù)說明
5.2.2任務(wù)實現(xiàn)
5.3使用多線程與LiveData
5.3.1任務(wù)說明
5.3.2任務(wù)實現(xiàn)
5.4使用Okhttp和Gson獲取Web API數(shù)據(jù)
5.4.1任務(wù)說明
5.4.2任務(wù)實現(xiàn)
5.5Activity的頁面跳轉(zhuǎn)與數(shù)據(jù)傳遞
5.5.1任務(wù)說明
5.5.2任務(wù)實現(xiàn)
5.6使用RxHttp獲取Web API數(shù)據(jù)
5.6.1任務(wù)說明
5.6.2任務(wù)實現(xiàn)
5.7使用Jsoup實現(xiàn)網(wǎng)頁數(shù)據(jù)提取
5.7.1任務(wù)說明
5.7.2任務(wù)實現(xiàn)
5.8使用Jsoup和Glide實現(xiàn)網(wǎng)頁數(shù)據(jù)渲染
5.8.1任務(wù)說明
5.8.2任務(wù)實現(xiàn)
5.9使用SwipeRefreshLayout和WebView
5.9.1任務(wù)說明
5.9.2任務(wù)實現(xiàn)
5.10本章綜合作業(yè)
第6章數(shù)據(jù)存儲與內(nèi)容提供
6.1使用SharedPreferences實現(xiàn)輕量化存儲
6.1.1任務(wù)說明
6.1.2任務(wù)實現(xiàn)
6.2Sqlite數(shù)據(jù)庫的創(chuàng)建
6.2.1任務(wù)說明
6.2.2任務(wù)實現(xiàn)
6.3使用pinyin4j實現(xiàn)拼音模糊查詢
6.3.1任務(wù)說明
6.3.2面向多音字的漢字轉(zhuǎn)拼音
6.3.3任務(wù)實現(xiàn)
6.4面向UI交互的Sqlite數(shù)據(jù)庫增刪改操作
6.4.1任務(wù)說明
6.4.2任務(wù)實現(xiàn)
6.5使用ContentProvider寫系統(tǒng)通訊錄
6.5.1任務(wù)說明
6.5.2運行時權(quán)限
6.5.3系統(tǒng)通訊錄的寫入方法
6.5.4任務(wù)實現(xiàn)
6.6使用ContentProvider讀系統(tǒng)通訊錄
6.6.1任務(wù)說明
6.6.2系統(tǒng)通訊錄的讀取方法
6.6.3任務(wù)實現(xiàn)
6.7選取系統(tǒng)相冊圖片
6.7.1任務(wù)說明
6.7.2任務(wù)實現(xiàn)
6.8本章綜合作業(yè)
第7章Fragment與導(dǎo)航
7.1使用底部導(dǎo)航
7.1.1任務(wù)說明
7.1.2使用向?qū)?chuàng)建底部導(dǎo)航
7.1.3認(rèn)識Fragment
7.1.4認(rèn)識導(dǎo)航組件Navigation
7.1.5任務(wù)實現(xiàn)
7.2Fragment的數(shù)據(jù)維持與數(shù)據(jù)傳遞
7.2.1任務(wù)說明
7.2.2任務(wù)實現(xiàn)
7.3Fragment的隱藏與顯示
7.3.1任務(wù)說明
7.3.2任務(wù)實現(xiàn)
7.4本章綜合作業(yè)
參考文獻