Android App 開發實戰系列 Part 1. 概述

栏目: IT技术 · 发布时间: 4年前

内容简介:這「文章章節篇幅如下,大概一到兩週會完成一 Part 並發佈,敬請鎖定這一系列文:做這個專案有兩個主要原因:1. 做為我個人的學習成果驗收和筆記 2. 因為過去我的文章都只提供片段的程式碼,後來收到很多人私訊或者寫信來問說有沒有完整的程式碼可以看,所以這次想要呈現一個完整、可運行的範例,讓大家可以了解觀念也同時有完整範例可以看,後續也在這專案加上新套件或新技術,後面的文章也都會基於此專案去延伸當範例跟講解。

起源 What? & Why?

這「 Android App 開發實戰系列 」一系列的文章,我們將會實作一個完整的電影 App – MovieHunt (且開源和大家一同切磋學習),這專案使用 The Movie Database API 當作資料來源,講解裡面使用到的技術、套件。

文章章節篇幅如下,大概一到兩週會完成一 Part 並發佈,敬請鎖定這一系列文:

  • Part 1. 需求、設計、架構和套件。
  • Part 2. 資料來源、API(近期會完成)
  • Part 3. Repository + Paging(即將來臨)
  • Part 4. ViewModel + View observe(即將來臨)
  • Part 5. Epoxy Model + Controller & data binding(即將來臨)
  • Part 6. Room: 資料庫(即將來臨)
  • Part 7. Paging: Local + Remote DataSource(即將來臨)

做這個專案有兩個主要原因:1. 做為我個人的學習成果驗收和筆記 2. 因為過去我的文章都只提供片段的程式碼,後來收到很多人私訊或者寫信來問說有沒有完整的程式碼可以看,所以這次想要呈現一個完整、可運行的範例,讓大家可以了解觀念也同時有完整範例可以看,後續也在這專案加上新套件或新技術,後面的文章也都會基於此專案去延伸當範例跟講解。

完整程式碼在這: https://github.com/enginebai/MovieHunt 歡迎 Fork + Star :star:

這專案內容和程式碼僅供學習用途,嚴禁任何營利、商業以及衍生性的行為,轉載請註明出處。

功能需求

廢話不多說,讓我們就來開始這 App 專案,首先第一個步驟是了解這個專案的需求是什麼。

Android App 開發實戰系列 Part 1. 概述
  1. 介面有首頁、列表頁以及內容三種頁面而已,設計風格參考 Google Play 首頁的垂直 + 水平列表。
  2. 首頁呈現固定幾種不同分類的電影列表,每個分類可以左右滑動,滑到底可以自動載入下一頁資料。點擊 View All 可以顯示該分類的電影列表,
  3. 列表一樣可以下拉更新、滑到底載入更多,點擊電影進入詳細內容頁。
  4. 詳細頁面呈現電影完整資訊。

Flow Chart

這個 App 的流程是非常地簡單,開啟首頁後,可以進入列表頁或者詳細內容頁。

Android App 開發實戰系列 Part 1. 概述

套件和架構

這一系列我們主要使用和介紹 Google 官方推出的 Architecture Components ,以及一些 Android 開發較常見知名、廣泛使用的第三方套件(以下依照章節篇幅介紹順序列出:

  • 專案結構採用 Gradle Kotlin DSL 且使用 :base 做為基底模組。(可以參考我之前的文章介紹和 開源專案
  • HTTP + RESTful API 的存取是 Android 最常見的 Retrofit + OkHttp 套件(個人覺得應該直接納入官方套件才對)
  • Paging 來做列表分頁資料的載入,讓我們可以更優雅地載入列表下一頁。
  • ViewModel 作為 UI 和資料端的互動元件,提供 UI 所需要的資料串流。
  • LiveData 當作資料串流,可以依照正確的元件生命週期,觀察資料的變更。
  • Data Binding 讓我們在 XML 裡面直接綁定資料,減少設定資料的程式碼。
  • Epoxy 來做複雜的列表介面,簡化 RecyclerView + Adapter 需要支援多種型別的套件。
  • Room 當作本機端的資料庫,當資料有變更的時候,UI 會自動收到變更通知然後更新。
  • 依賴注入 (Dependency Injection, DI)的部份是使用 Koin ,這系列的文章不會介紹Koin 的使用方式,之後考慮寫一篇獨立的文章做依賴注入的介紹。
  • // TODO 單一 Activity 架構,然後採用 Navigation 來做頁面切換、導頁的動作。(近期會完成)
  • // TODO 未來會導入 Kotlin Coroutines 做執行續的切換做非同步的操作,再請拭目以待。 

架構

架構的部分,我們主要依照 Google 的 Guide to App Architecture 作為設計原則,採用主推的 MVVM 架構,搭配 RxJava / LiveData 的觀察者模式來達成 Reactive UI。 MVVM Architecture 模式分層元件的職責如下:

Android App 開發實戰系列 Part 1. 概述
  • View : Activity / Fragment 單純只做介面的事情或邏輯。
  • ViewModel : 處理非介面的邏輯,同時提供資料串流讓 View 去觀察變更。
  • Model : 我們採用 Repository 模式作為資料提供的統一窗口,讓 ViewModel 可以取得資料而不用關注底層資料怎麼來的,資料的取得和處理全部都在 Model 裡面實作。

這邊有一個重要的原則:所有資料流向統一都從 Model  → ViewModel → View,就是 View 訂閱 ViewModel、ViewModel 訂閱 Model。

而依賴方向則是 View → ViewModel → Model,表示說 View 使用 ViewModel,View 知道 ViewModel,知道用哪一個 ViewModel、但是 ViewModel 不曉得哪一個 View 正在使用它。 同樣,Model 也是一樣的道理,它不曉得是哪一個 ViewModel 在使用。

專案目錄架構

com.enginebai.moviehunt # Root Package
├── data                # For data modeling layer
│   ├── local           # Local persistence database
|   │   ├── dao         # Data Access Object for Room
|   |   ├── model       # Model classes
│   ├── remote          # Remote data source
│   └── repo            # Repositories for single source of data
|
├── di                  # Dependency injection modules
│
├── ui                  # Fragment / View layer
│   ├── list            # List screen Fragment and ViewModel
│   ├── home            # Main screen Fragment and ViewModel
|   │   ├── controller  # Epoxy controller for RecyclerView
|   │   └── models      # Epoxy models for RecyclerView
│   └── details         # Detail screen Fragment and ViewModel
|
├── utils               # Utility Classes / Kotlin extensions
├── MainActivity        # Single activity
├── AppContext          # Application
└── NavigationRouter    # Navigation controller

Part 1. 就到這邊,這部份講解我們的需求,以整體性、概括性地講解我們使用的 工具 以及規劃的架構,Part 2. 開始我們就會直接深入專案,以資料來源作為開始實作。

如果你有任何和此專案相關的疑問,歡迎留言給我交流或討論。

完整程式碼: https://github.com/enginebai/MovieHunt 歡迎 Fork + Star :star:


以上所述就是小编给大家介绍的《Android App 開發實戰系列 Part 1. 概述》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python 3网络爬虫开发实战

Python 3网络爬虫开发实战

崔庆才 / 人民邮电出版社 / 2018-4 / 99

本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib、requests、正则表达式、Beautiful Soup、XPath、pyquery、数据存储、Ajax数据爬取等内容,接着通过多个案例介绍了不同场景下如何实现数据爬取,后介绍了pyspider框架、Scrapy框架和分布式爬虫。 本书适合Python程序员阅读。一起来看看 《Python 3网络爬虫开发实战》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具