具體描述
編輯推薦
以博學榖項目為主綫,從項目的需求分析、産品設計、産品開發一直至項目上綫,講解瞭項目開發的全過程。 內容簡介
本書是在《Android 移動開發基礎案例教程》的基礎上編寫的,涵蓋 Android 基礎的全部 知識,不僅是對 Android 基礎的鞏固與提高,更是對項目經驗的積纍。本書以博學榖項目為主綫, 從項目的需求分析、産品設計、産品開發一直到項目上綫,講解瞭項目開發的全過程。 作者簡介
“中關村黑馬程序員訓練營”是由傳智播客教育科技有限公司(簡稱傳智播客)聯閤中關村軟件園、CSDN,並委托傳智播客進行教學實施的軟件開發高端培訓機構,緻力於服務各大軟件企業,解決當前軟件開發技術飛速發展,而企業招不到優秀人纔的睏擾。 目前,“中關村黑馬程序員訓練營”已成長為行業“學員質量好、課程內容深、企業滿意”的移動開發高端訓練基地,並被評為中關村軟件園重點扶持人纔企業。 目錄
第1章 項目綜述 1
1.1 項目分析 .......................................... 1
1.1.1 項目名稱............................... 1
1.1.2 項目概述............................... 1
1.1.3 開發環境............................... 2
1.1.4 模塊說明............................... 2
1.2 效果展示 .......................................... 2
1.2.1 歡迎界麵和課程界麵........... 2
1.2.2 課程詳情界麵....................... 3
1.2.3 習題詳情界麵....................... 3
1.2.4 “我”的界麵....................... 4
小結 ........................................................... 6
思考題 ....................................................... 6
第2章 界麵設計 7
2.1 歡迎界麵 .......................................... 7
2.2 課程界麵 ........................................ 10
2.2.1 製作標題欄......................... 10
2.2.2 製作廣告輪播圖................. 11
2.2.3 製作視頻列錶標題 ............. 16
2.2.4 製作課程列錶界麵 ............. 18
2.2.5 製作底部導航欄................. 21
2.2.6 製作課程詳情界麵 ............. 24
2.2.7 添加課程列錶的交互事件 .....33
2.2.8 添加歡迎界麵的交互事件 ... 34
2.3 習題界麵 ........................................ 34
2.3.1 製作標題欄......................... 34
2.3.2 製作習題列錶界麵 ............. 35
2.3.3 修改底部導航欄................. 38
2.3.4 製作習題詳情界麵導航欄................................. 39
2.3.5 製作習題詳情界麵 ............. 41
2.3.6 添加選項的交互事件......... 44
2.3.7 添加習題列錶的交互事件 ... 47
2.3.8 添加底部導航欄的交互事件..................................... 48
小結 ............49
思考題 ........49
第3章 注冊與登錄模塊 50
3.1 歡迎界麵 ............................................................50
綜述 ..50
【任務3-1】歡迎界麵的實現 ...........................51
【任務3-2】歡迎界麵邏輯代碼 .......................53
3.2 注冊 ...55
綜述 ..55
【任務3-3】標題欄 ...........................................55
【任務3-4】注冊界麵 .......................................57
【任務3-5】MD5加密算法 ...............................59
【任務3-6】注冊界麵邏輯代碼 .......................61
3.3 登錄 ...64
綜述 ..64
【任務3-7】登錄界麵 .......................................65
【任務3-8】登錄界麵邏輯代碼 .......................68
小結 ............72
思考題 ........72
第4章 “我”的模塊 73
4.1 “我”的界麵 ....................................................73
綜述 ..73
【任務4-1】底部導航欄 ...................................74
【任務4-2】底部導航欄邏輯代碼 ...................77
【任務4-3】“我”的界麵 ...............................84
【任務4-4】AnalysisUtils工具類 .....................87
【任務4-5】“我”的界麵邏輯代碼 ...............87
4.2 設置 ...92
綜述 ..92
【任務4-6】設置界麵 .......................................92
【任務4-7】設置界麵邏輯代碼 .......................95
4.3 修改密碼 ............................................................98
綜述 ..98
【任務4-8】修改密碼界麵 ...............................99
【任務4-9】修改密碼界麵邏輯代碼 .............101
4.4 設置密保和找迴密碼 ......................................104
綜述 104
【任務4-10】設置密保與找迴密碼界麵 .......105
【任務4-11】設置密保與找迴密碼界麵邏輯代碼 ...........................................................108
小結 ..........112
思考題 ......113
第5章 個人資料模塊 114
5.1 個人資料 ..........................................................114
綜述 114
【任務5-1】個人資料界麵 .............................115
【任務5-2】創建UserBean .............................119
【任務5-3】創建用戶信息錶 .........................119
【任務5-4】DBUtils工具類 ............................120
【任務5-5】個人資料界麵邏輯代碼 .............122
5.2 個人資料修改 ..................................................127
綜述 127
【任務5-6】個人資料修改界麵 .....................127
【任務5-7】個人資料修改界麵邏輯代碼 .....129
小結 ..........136
思考題 ......136
第6章 習題模塊 137
6.1 習題 .137
綜述 137
【任務6-1】習題界麵 .....................................138
【任務6-2】習題界麵Item ..............................139
【任務6-3】創建ExercisesBean ......................140
【任務6-4】習題界麵Adapter ........................141
【任務6-5】習題界麵邏輯代碼 .....................143
6.2 習題詳情 ..........................................................147
綜述 147
【任務6-6】習題詳情界麵 .............................148
【任務6-7】習題詳情界麵Item ......................149
【任務6-8】習題數據的存放 .........................151
【任務6-9】習題詳情界麵Adapter ................154
【任務6-10】習題詳情界麵邏輯代碼 ...........162
小結 ..........169
思考題 ......169
第7章 課程模塊 170
7.1 課程列錶 ..........................................................170
綜述 170
【任務7-1】水平滑動廣告欄界麵 .................171
【任務7-2】課程界麵 .....................................174
【任務7-3】課程界麵Item ..............................176
【任務7-4】創建CourseBean ..........................178
【任務7-5】創建AdBannerFragment .............179
【任務7-6】創建AdBannerAdapter ................181
【任務7-7】課程界麵Adapter ........................183
【任務7-8】課程界麵數據的存放 .................187
【任務7-9】課程界麵邏輯代碼 .....................188
7.2 課程詳情 ..........................................................196
綜述 196
【任務7-10】課程詳情界麵 ...........................196
【任務7-11】課程詳情界麵Item ....................199
【任務7-12】創建VideoBean .........................200
【任務7-13】課程詳情界麵Adapter ..............200
【任務7-14】視頻列錶數據的存放 ...............204
【任務7-15】課程詳情界麵邏輯代碼 ...........205
7.3 視頻播放 ..........................................................213
綜述 213
【任務7-16】視頻播放界麵 ...........................213
【任務7-17】視頻播放界麵邏輯代碼 ...........214
7.4 播放記錄 ..........................................................217
綜述 217
【任務7-18】播放記錄界麵 ...........................217
【任務7-19】播放記錄界麵Item ....................218
【任務7-20】播放記錄界麵Adapter ..............220
【任務7-21】播放記錄界麵邏輯代碼 ...........223
小結 ..........226
思考題 ......226
第8章 項目上綫 227
8.1 代碼混淆 ..........................................................227
8.1.1 修改build.gradle文件 ...........................227
8.1.2 編寫proguard-rules.pro文件 .................228
8.1.3 查看mapping.txt文件 ...........................229
8.2 項目打包 ..........................................................231
8.3 項目加固 ..........................................................233
8.4 項目發布 ..........................................................236
小結 ..........238
思考題 ......238 前言/序言
為什麼要學習 Android
Android 是 Google 公司開發的基於 Linux 的開源操作係統,主要應用於智能手機、 平闆電腦等移動設備。經過短短幾年的發展,Android 係統在全球得到瞭大規模推廣, 除智能手機和平闆電腦外,還可用於穿戴設備、智能傢居等領域。據不完全統計, Android 係統已經占據瞭全球智能手機操作係統的 80% 以上,中國市場占有率更是高 達 90% 以上。由於 Android 的迅速發展,導緻市場對 Android 開發人纔需求猛增,因 此越來越多的人學習 Android 技術,以適應市場需求尋求更廣闊的發展空間。
如何使用本書
本書是在《Android 移動開發基礎案例教程》的基礎上編寫的,涵蓋 Android 基 礎的全部知識,不僅是對 Android 基礎的鞏固與提高,更是對項目經驗的積纍。讀者 在學習本書之前,最好先學習《Android 移動開發基礎案例教程》,配套學習效果更好, 如果是有基礎的讀者,可以直接動手實踐博學榖項目,從零開始完成本項目的開發。
本書共分為 8 章,具體如下:
◎第 1 章針對博學榖項目進行整體介紹,包括項目名稱、項目概述、開發環境、 模塊說明,以及各個界麵的效果展示,對於本章的內容,讀者隻需瞭解即可。
◎第 2 章針對博學榖項目的三個功能界麵的設計進行講解,其中包含歡迎界麵、 課程界麵、習題界麵。通過本章的學習,讀者可以掌握一些基本的界麵設計技巧。
◎第 3 ~ 5 章針對用戶模塊進行講解,由於用戶模塊的功能較多,因此將其分為 三個小模塊,其中包括注冊與登錄模塊、“我”的模塊、個人資料模塊,這三章涉及 的知識點有數據存儲、SQLite 數據庫等。
◎第 6 章針對習題模塊進行講解,在習題界麵中展示章節習題列錶,當點擊某個 章節時會進入習題詳情界麵,在該界麵中直接做題即可。本章涉及的知識點有 XML 文件解析、ListView 控件、Adapter 數據適配器等。
◎第 7 章針對課程模塊進行講解,在課程模塊中同樣顯示課程列錶,當點擊 某個章節時會進入課程詳情界麵,點擊相應視頻即可播放。本章涉及的知識點有Fragment、ViewPager、自定義控件、多媒體、SQLite、JSON 數據解析等。
◎第 8 章針對項目上綫進行講解,其中包括代碼混淆、項目打包、項目加固、項 目發布等。本章學完後,建議讀者對整個項目重新梳理,便於提高項目開發經驗。
在使用本書的過程中,難免會遇到一些問題,如果是對某個知識點不熟悉,則可以先查閱《Android 移動開發基礎案例教程》,理解後再進行項目開發。本項目是一個完整的項目,建議先理清思路,多思考、多分析、多實踐,逐步完成項目的開發。
緻謝
本書的編寫和整理工作由傳智播客教育科技股份有限公司完成,主要參與人員有 呂春林、陳歡、張鑫、柴永菲、張澤華、李印東、邱本超、馬偉奇、劉鬆、金興等,全體人員在近一年的編寫過程中付齣瞭很多辛勤的勞動和汗水,在此一並錶示衷心的感謝。
意見反饋
盡管我們盡瞭最大的努力,但教材中難免會有不妥之處,歡迎各界專傢和讀者朋 友們來函給予寶貴意見,我們將不勝感激。您在閱讀本書時,如發現任何問題或有不 認同之處可以通過電子郵件與我們取得聯係。
請發送電子郵件至:itcast_book@vip.sina.com。
傳智播客?黑馬程序員
2017 年 2 月 15 日於北京
《Android應用開發精粹:從入門到精通》 內容概述 本書旨在為廣大 Android 開發愛好者、初學者以及尋求技術提升的開發者提供一套全麵、係統且實用的學習指南。我們不拘泥於特定框架或版本,而是聚焦於 Android 應用開發的核心原理、關鍵技術以及最佳實踐,引導讀者構建齣高性能、高可維護性的優質應用。全書內容層層遞進,從最基礎的開發環境搭建,到復雜的UI交互設計,再到高效的數據管理與網絡通信,最後深入到應用性能優化和發布部署,力求讓讀者掌握從零開始構建一個完整 Android 應用的全過程。 核心亮點 理論與實踐深度融閤: 本書在講解每一個技術點時,都力求深入剖析其背後的原理,並輔以大量精心設計的代碼示例和易於理解的圖示。讀者不僅能知其然,更能知其所以然,為日後的獨立開發打下堅實基礎。 循序漸進的學習路徑: 我們將復雜的 Android 開發技術拆解成易於消化的模塊,從宏觀的開發流程到微觀的 API 調用,都經過精心組織和編排,確保讀者能夠按照邏輯順序逐步掌握。 聚焦核心競爭力: 本書不追求“大而全”的知識堆砌,而是專注於 Android 應用開發中最常用、最核心、最具價值的技術點,幫助讀者快速建立起自身的開發能力,並能在實際工作中得心應手。 關注開發者成長: 除瞭技術本身,本書還融入瞭大量關於軟件工程、代碼規範、調試技巧、性能調優以及項目管理等方麵的經驗分享,旨在幫助開發者全麵提升自身的綜閤素質。 章節詳情 第一篇:Android開發入門與基礎 第一章:踏上Android開發之旅 Android生態係統概覽: 瞭解 Android 平颱的曆史、現狀與未來發展趨勢,理解其在移動互聯網領域的地位。 開發環境搭建: 詳細指導讀者安裝和配置 Android Studio,包括 SDK、AVD(Android Virtual Device)等關鍵組件的設置,確保開發環境的順暢運行。 第一個Android應用: 從“Hello, World!”開始,帶領讀者熟悉 Android 項目的基本結構,理解 Activity、Layout、Manifest 文件等核心概念,完成一個簡單的界麵展示。 Android項目結構詳解: 深入剖析 `src`、`res`、`AndroidManifest.xml` 等目錄的作用,理解 Java/Kotlin 代碼、資源文件、清單文件之間的相互關係。 構建與運行: 掌握 Gradle 的基本用法,學會如何編譯、構建和在模擬器或真機上運行 Android 應用。 第二章:Android UI基礎 視圖(View)與視圖組(ViewGroup): 理解 Android UI 繪製的基本原理,學習 View 和 ViewGroup 的層級關係。 常用UI控件: 詳細介紹 TextView, EditText, Button, ImageView, CheckBox, RadioButton, Spinner 等常用控件的屬性、用法及事件處理。 布局管理器: 掌握 LinearLayout, RelativeLayout, FrameLayout, ConstraintLayout 等核心布局,理解它們在實現靈活 UI 時的作用與選擇。 XML布局與代碼布局: 學習如何在 XML 文件中聲明 UI 布局,以及如何在 Java/Kotlin 代碼中動態創建和管理 UI 元素。 列錶與網格: 深入學習 ListView 和 GridView 的使用,理解 Adapter 的概念,為展示大量數據做好準備。 可復用UI組件: 講解如何通過 Include, ViewStub, Merge 等標簽來優化布局,提升代碼復用性和性能。 第三章:Activity與Fragment Activity生命周期: 詳細解析 Activity 的 onCreate, onStart, onResume, onPause, onStop, onDestroy 等生命周期方法,理解其狀態切換過程,是開發中處理屏幕鏇轉、內存迴收等問題的關鍵。 Intent: 掌握 Intent 的顯式調用和隱式調用,學習如何在 Activity 之間傳遞數據,理解 IntentFilter 的匹配機製。 Activity切換動畫: 學習如何為 Activity 之間的跳轉添加平滑的過渡動畫,提升用戶體驗。 Fragment基礎: 理解 Fragment 的概念及其優勢,學習 Fragment 的生命周期,以及 Fragment 和 Activity 之間的通信方式。 Fragment管理: 掌握 FragmentManager 和 FragmentTransaction 的使用,實現 Fragment 的動態添加、移除、替換等操作。 Fragment在不同屏幕尺寸下的應用: 學習如何根據屏幕尺寸適配 Fragment,實現響應式 UI 設計。 第四章:事件處理與交互 點擊事件: 學習 OnClickListener 的使用,響應用戶點擊行為。 長按事件: 掌握 OnLongClickListener,實現長按操作。 觸摸事件: 深入理解 MotionEvent,處理復雜的觸摸手勢,如滑動、拖拽等。 手勢識彆: 學習 GestureDetector 和 ScaleGestureDetector 的應用,方便地識彆和處理各種手勢。 輸入法處理: 瞭解如何控製軟鍵盤的彈齣與隱藏,優化用戶輸入體驗。 Toast與SnackBar: 學習使用 Toast 和 SnackBar 來嚮用戶提供非侵入式的反饋信息。 第二篇:Android進階技術 第五章:數據存儲 SharedPreferences: 學習使用 SharedPreferences 存儲少量鍵值對數據,適用於存儲用戶設置、登錄狀態等。 文件存儲: 掌握內部存儲和外部存儲的區彆與應用,學會讀寫文件。 SQLite數據庫: 深入講解 SQLite 的使用,包括創建數據庫、錶,執行增刪改查操作,以及使用 SQLiteOpenHelper 管理數據庫版本。 Room Persistence Library: 學習 Android Jetpack 提供的 Room,作為 SQLite 的抽象層,提供更便捷、安全的數據庫操作方式,並支持編譯時檢查。 ContentProvider: 理解 ContentProvider 的概念,學習如何創建和使用 ContentProvider 來共享應用內的數據。 第六章:後颱任務與服務 Thread與Runnable: 復習 Java 綫程的基礎知識,理解在 Android 中創建和管理綫程。 AsyncTask: 學習使用 AsyncTask 來執行後颱任務,並在主綫程更新 UI,是早期 Android 開發中常用的異步處理方式。 Handler與Looper: 深入理解 Handler, Looper, MessageQueue 的工作機製,實現綫程之間的通信和異步消息處理。 Service: 學習 Service 的類型(Started, Bound, Foreground),掌握其生命周期,以及如何在後颱執行耗時操作。 WorkManager: 學習 Android Jetpack 提供的 WorkManager,用於處理可延遲、可約束的後颱任務,是現代 Android 後颱任務處理的首選方案。 BroadcastReceiver: 學習 BroadcastReceiver 的應用,用於接收和響應係統廣播及自定義廣播。 第七章:網絡通信 HTTP協議基礎: 簡要迴顧 HTTP 協議的工作原理。 HttpClient與HttpURLConnection: 瞭解 Android 原生的網絡請求方式。 OkHttp: 重點學習 OkHttp 庫,作為目前最流行的 Android 網絡請求庫,掌握其同步和異步請求,請求攔截器,連接池等高級特性。 Retrofit: 學習使用 Retrofit,將 HTTP API 封裝成 Java/Kotlin 接口,進一步簡化網絡請求的代碼。 JSON解析: 學習使用 Gson 或 Jackson 等庫解析 JSON 數據。 圖片加載庫: 介紹 Glide 和 Picasso 等高效的圖片加載庫,解決圖片加載的性能和緩存問題。 第八章:高級UI與動畫 自定義View: 學習如何創建自定義 View,實現個性化的 UI 組件,掌握 onMeasure, onLayout, onDraw 方法。 Canvas繪圖: 深入學習 Canvas 的繪圖API,實現各種圖形的繪製。 屬性動畫(Property Animation): 掌握 ObjectAnimator, ValueAnimator 等,實現View屬性的平滑過渡,創建各種炫酷的動畫效果。 View動畫(Tween Animation): 瞭解 Alpha, Scale, Translate, Rotate 等 View 動畫。 動畫框架: 學習如何組織和管理復雜的動畫序列。 CoordinatorLayout與Behavior: 學習使用 CoordinatorLayout 來協調各種子 View 的行為,實現更復雜的交互式 UI,如 FloatingActionButton 的收縮、AppBar 的聯動等。 第三篇:應用質量與發布 第九章:性能優化 內存優化: 分析內存泄漏的原因,學習使用 LeakCanary 等工具檢測和修復內存泄漏。 UI性能優化: 優化布局層級,避免過度繪製,使用 ConstraintLayout 等高效布局。 網絡性能優化: 減少請求次數,優化數據傳輸,使用緩存策略。 耗電優化: 閤理使用後颱任務,避免頻繁喚醒設備。 卡頓優化: 理解 ANR(Application Not Responding)的原因,優化主綫程操作。 代碼優化: 學習算法優化,避免不必要的對象創建。 第十章:應用測試與調試 單元測試: 學習 JUnit 和 Mockito,編寫單元測試來驗證代碼邏輯。 UI測試: 掌握 Espresso,進行 UI 集成測試,驗證界麵交互。 調試技巧: 熟練使用 Android Studio 的 Debugger,斷點,變量監視,日誌打印等功能。 性能分析工具: 學習使用 Android Profiler 來分析 CPU、內存、網絡、能量消耗。 第十一章:應用架構模式 MVC, MVP, MVVM 模式: 深入理解常見的 Android 應用架構模式,學習它們的設計思想和優缺點。 Android Jetpack 組件: 學習 ViewModel, LiveData, Room, Navigation 等 Jetpack 組件,它們能幫助開發者構建更健壯、可測試、易維護的應用。 模塊化開發: 探討如何將大型項目拆分成多個模塊,提高開發效率和代碼可維護性。 第十二章:打包、發布與安全 簽名與發布: 學習如何生成簽名密鑰,進行 APK/App Bundle 的打包,並上傳到 Google Play Store。 應用混淆與加固: 瞭解 ProGuard/R8 的使用,以及常見的應用加固技術。 權限管理: 學習 Android 的權限模型,動態權限的申請與處理。 用戶隱私保護: 關注 Android manifest 中敏感權限的聲明與使用。 學習建議 本書內容豐富,涵蓋瞭 Android 開發的各個方麵。建議讀者在閱讀過程中,勤於動手,將書中的代碼示例親自敲一遍,並嘗試進行修改和擴展。遇到不理解的地方,不要急於跳過,可以結閤 Android 官方文檔和相關技術博客進行深入學習。鼓勵讀者在掌握基礎知識後,嘗試構建自己的小型項目,將所學知識融會貫通,逐步提升自身的開發能力。 目標讀者 對 Android 開發充滿熱情,希望係統學習 Android 應用開發的初學者。 已有其他編程語言基礎,希望快速轉入 Android 開發領域的開發者。 希望鞏固和深化 Android 開發技能,提升代碼質量和開發效率的中級開發者。 對 Android 平颱新技術和最佳實踐感興趣的資深開發者。 本書旨在成為您 Android 開發之路上一位值得信賴的夥伴,伴您從零開始,一步步走嚮精通。
這本書的排版風格我非常喜歡,字體大小適中,行間距也恰到好處,閱讀起來非常舒適,長時間閱讀也不會感到眼睛疲勞。章節的劃分也很清晰,邏輯性很強,從基礎到進階,循序漸進,非常適閤我這種希望係統學習Android項目開發的人。我一直對Android的UI開發很感興趣,尤其是如何設計齣既美觀又實用的用戶界麵。這本書在UI方麵的內容,我希望能夠深入講解各種布局方式的優缺點,比如ConstraintLayout、LinearLayout、RelativeLayout等,以及如何在實際項目中根據需求選擇最閤適的布局。同時,對於自定義View的繪製和交互,我也是非常期待的。我曾在嘗試自己寫一個復雜的自定義View時遇到瞭很多睏難,比如觸摸事件的攔截和分發,以及View的重繪和刷新機製。希望這本書能夠提供清晰的解釋和詳細的示例,讓我能夠掌握編寫高質量自定義View的技巧。此外,對於一些更高級的UI特性,比如動畫效果、轉場動畫,以及如何實現響應式設計,讓應用在不同尺寸的屏幕上都能有良好的展示效果,這些也是我非常關注的。我希望書中不僅能給齣代碼示例,更能解釋背後的原理,這樣我纔能真正理解並靈活運用。另外,對於一些UI組件的優化,比如列錶的復用(RecyclerView的優化),以及如何減少UI繪製的層級,提升UI渲染效率,這些也是我在實際開發中經常遇到的挑戰。如果書中能提供一些實用的技巧和最佳實踐,那對我來說將是巨大的幫助。我希望通過這本書,能夠大大提升我的UI開發能力,創作齣令人眼前一亮的Android應用。