1. 程式人生 > >MONKOVEL-安卓端免費的小說閱讀器 原始碼分享

MONKOVEL-安卓端免費的小說閱讀器 原始碼分享

想了很久,還是決定把我最近的專案的原始碼發出來,有興趣的可以共享,學習,交流。希望尊重作者,轉載,商用請遵循本人。
  APP本地小說僅支援txt格式,將小說按章節分割存入資料庫,線上小說來源是通過手機模擬小說網站的GET請求,獲取網站原始碼,根據不同網站來源進行資料解析,獲取相應資料存入資料庫顯示(已經匹配了近30個網站),同時為了提升閱讀體驗,章節內容做了二級快取處理。同時也增加了離線載入功能。
  
  這款APP,主打精簡,UI精簡但不失優雅,功能精簡但不失體驗,根據功能介面劃分為:

  1. 書架模組:包含本地書籍,以及網路線上書籍。
  2. 書城:以一個網站為資料來源,解析其主頁資料,篩選以及封裝資料以Android原生介面的形式展現出來。
  3. 網路小說離線功能:通過提前設定任務佇列,通過Service後臺獲取章節資料。
  4. 本地小說:將手機本地的txt小說匯入應用。
  5. 小說閱讀模組。
      本APP所有資料來源於第三方小說網站,不具備自身後臺,通過JSoup對xml進行資料解析,來完成使用者對小說內容的獲取。

開發難點

本地超大txt小說資料處理

我們都知道手機直接讀取超大文字時,不做好優化是很可能OOM的。我對本地小說的處理方式是
  
  可檢視ImportBookModelImpl類。

小說閱讀模組

由於最初是以自身閱讀習慣開發,所以只有左右翻頁閱讀功能,我並沒有直接使用自定義View去完整整體UI,雖然定義View會使得UI更自由,但是我認為通過自定義的ViewGroup去載入佈局反而開發成本相對很低。
  在自定義ViewGroup中,最多隻有3個頁面,分別是當前頁,上一頁,下一頁。當滑動到下一頁時,上一頁移除,當前頁指向下一頁,同時再新增下一頁。保證UI佈局數量不會越來越多,杜絕因為View過多而產生的OOM。
  同時閱讀時,章節內容資料優先從記憶體讀取,隨後是資料庫,都沒有的話,再通過章節的網路地址去請求新的章節再解析最後返回資料,存入快取以及資料庫中。
##順便推薦下自己的開源庫吧
順便介紹下自己的兩個UI庫把
進度條:

https://github.com/ZhangQinhao/MProgressBar
沉浸式佈局:https://github.com/ZhangQinhao/ImmerseLayout
適用於RecyclerView以及ScrollView的上下拉重新整理控制元件最近也會找時間從專案中摘取出來
MVPlib:https://github.com/ZhangQinhao/BaseMvpLib 集成了rxjava+retrofit+rxbus等一些快速開發的框架。

請勿商用,請勿copy程式碼打包上市場!!!僅僅提供學習