最近利用閒暇時間,寫了一款生活工具類的應用,開始的目的也主要是為了熟練一些老框架和熟悉一些新框架或者第三方庫,大家可以把它看成一款練手的 Demo 應用吧!這裡把自己在這個應用中用的庫總結一下,還有一些大家感興趣的實現效果也在這裡給大家說明一下,大家在開發中作為一種參考吧。
目錄
簡書這個目錄結構真的有點混亂的,這裡補充一下整體結構:
- 應用相關(小秋魔盒)
- 第三方庫
- 應用的整體框架(Rxjava + Retrofit + okhttp)
- 一些通用且常用的框架(Glide、leakcanary、Logger等等)
- Logger 日誌列印
- GsonFormat & Gson json 資料解析
- butterknife 依賴注入框架
- leakcanary 記憶體洩漏檢測工具
- Glide 圖片請求庫
- circleimageview 圓形圖片庫
- greenDAO 資料庫
- eventbus 事件釋出/訂閱框架
- 常用第三方平臺的使用
- 小米推送
- ShareSDK
- SMSSDK
- 友盟統計
- 一些針對功能的開源庫
- BaseRecyclerViewAdapterHelper RecycleView 擴充庫
- ReactiveNetwork 手機網路連線狀態動態監控
- colorpicker 顏色畫板選擇庫
- BGAQRCode-Android 二維碼掃描專案
- MPAndroidChart 圖表庫
- material-calendarview 材料設計日曆控制元件
- flexbox-layout 盒子佈局控制元件
- KenBurnsView 視差圖片控制元件
- materialsearchview 材料設計搜尋框
- MagicIndicator 指示器庫
- Android應用自動更新庫(android-auto-update)
- Slidinglayout 果凍彈跳效果
- SlidingTutorial-Android 引導頁
- Android 許可權的動態申請
- 圖片手勢控制元件
- 結尾
應用相關
這裡是這款應用的下載地址和演示視訊,大家可以下載把玩一下:
小秋魔盒下載地址:mobile.baidu.com/item?type=s…
小秋魔盒演示視訊:v.youku.com/v_show/id_X…
第三方庫
下面進入重點,主要介紹一下開發中採用的庫第三方框架和庫(截圖較多,手機流量黨慎入)。
1. 應用的整體框架(Rxjava + Retrofit + okhttp 網路請求框架)
在以前的專案中採用的網路請求框架,基本上都是使用的封裝好的 okhttp 框架,不過最近一兩年,Rxjava + Retrofit 十分熱門勢頭很盛。作為開發者,總是要去學習和接受採用這些新出來的技術。在開發的世界裡,永遠是技術至上,一門新技術的盛行總是有它的優越之處,要麼比老框架效能提升不少,要不更加易用等等。
對於 Rxjava + Retrofit + okhttp 相結合的使用,個人建議目前不要去網上找那些所謂的封裝好的庫什麼的,大家還是原生的使用 Rxjava 和 Retrofit,雖然程式碼上有些繁瑣但是這樣一來大家能夠更快的熟悉它們的各個用法。(同時,表示目前我也沒有找到能夠把它們封裝十分完善的庫)
三個庫的官方地址請自行查詢,這裡提供一個介紹用法的 Demo 地址(個人也是參考這個使用的)
Github地址:github.com/rengwuxian/…
如果對這三個庫的基本用法還不太熟悉的,可以參考一下下面我收集的一些教程:
Rxjava 教程
給 Android 開發者的 RxJava 詳解: gank.io/post/560e15…
Okhttp 教程:
地址:ocnyang.com/tags/OkHttp…
Retrofit2 教程:
地址:ocnyang.com/tags/Retrof…
2. 一些通用且常用的框架(Glide、leakcanary、Logger等等)
Logger 日誌列印
Github地址:github.com/orhanobut/l…
GsonFormat & Gson json 資料解析
GsonFormat Github地址:github.com/zzz40500/Gs…
Gson Github地址:github.com/google/gson
butterknife 依賴注入框架
Github地址:github.com/JakeWharton…
leakcanary 記憶體洩漏檢測工具
Github地址:github.com/square/leak…
Glide 圖片請求庫
Github地址:github.com/bumptech/gl…
教程地址:ocnyang.com/tags/Glide/
circleimageview 圓形圖片庫
Github地址:github.com/hdodenhof/C…
greenDAO 資料庫
Github 地址:github.com/greenrobot/…
eventbus 事件釋出/訂閱框架
Github 地址:github.com/greenrobot/…
3. 常用第三方平臺的使用(推送 + 社會化分享登入 + 簡訊驗證)
這裡先說一下,其實目前國內市場有相同功能的各個平臺基本上趨於同質化,選擇哪個也沒必要那麼糾結,效率相差不會太大。
- 小米推送(本來沒想用小米的,抵不住前幾年小米手機賣的好名氣大,我就用用試試。這裡說一下和其他平臺相比的不足點,小米推送目前不支援富文字的但是效率是很不錯的。)
- ShareSDK Mob 平臺的社會化分享和登入
- SMSSDK Mob 平臺的手機簡訊驗證(感覺 Mob 平臺名氣穩健,一方面是名字取得好呀,一方面永久免費)
- 友盟統計 (這個小應用大部分都會用吧)
4. 一些針對功能的開源庫
BaseRecyclerViewAdapterHelper RecycleView 擴充庫 無論在哪個專案,可能使用相對比較頻繁的就是列表了,這裡先說一下自己選取列表庫。如果你還在著重用ListView/GridView,你真的需要抽出一點時間還研究研究一下 RecyclerView 的用法了。
RecyclerView 的使用我想大家已經在日常開發中已經頻繁使用了,現在針對 RecyclerView 的封裝庫也已經是遍地都是了,Github 上 star 過千的也很多很多了。
大家可以看看這位朋友總結的 RecyclerView 庫的集合,你一定會眼花繚亂的:
《那些酷炫的RecyclerView開源庫整理》 簡書地址 www.jianshu.com/p/154891851…
而我這當初在對比多個庫後最終選擇了 BaseRecyclerViewAdapterHelper 這個庫,原因這個簡單說一下:自己在選擇時的標準是:
- **1. **列表要有的功能要全(新增 Header&Footer,下拉重新整理頁面,上拉載入更多這些基本的功能都要有);
- **2. **不能有入侵性,所謂入侵性就是不能對原生態使用有本質的改變,比如有些框架要求你在使用時使用 SuperRecycleView 諸如這些自定義的控制元件名,更有甚者有時候看這些框架原始碼才發現,它內部竟然是繼承封裝的 LinearLayout;有些要求你在使用原有控制元件時,需要在原有控制元件外部巢狀一層父佈局,這點也是不能容忍的。
- **3. **這裡簡介一下 BaseRecyclerViewAdapterHelper,這個框架入侵性非常小,佈局時你不需要任何改變,需要下拉重新整理時,你可以像從前一樣在外部巢狀一層 SwipeRefreshLayout 就好了。同時載入動畫,載入失敗等的佈局你另外設定就行了,新增 header/footer 你新建一個佈局通過 .add(header) 就很輕易的新增上了。
BaseRecyclerViewAdapterHelper 這個框架從命名上你大概就能看出來,它的入侵體現在 Adapter 上,但是 Adapter 的職責是資料適配填充,對它的入侵在我看來是可以接受的。
這裡就說這麼多,感興趣的話自己可以到 Github 上了解一下具體用法(說明文件還算友好,建議參考Demo看):
Github 地址:github.com/CymChad/Bas…
這裡向大家展示一下在“小秋魔盒”中的使用:
最近對 RecyclerView 寫了一篇比較詳細的梳理文章,大家可以看一下:
RecyclerView 梳理:點選&長按事件、分割線、拖曳排序、滑動刪除
ReactiveNetwork 手機網路連線狀態動態監控
現在的應用中,常常用到例如 WiFi 網路下顯示圖片,而手機流量下不顯示圖片的需求,這個時候就需要隨時監聽手機網路的連線和斷開、WiFi和流量的切換,以便隨時做出相應的變化。
ReactiveNetwork 這個庫能夠幫你做到這一點。這個庫我也是無意中發現的,具體的用法大家可以自己檢視:
Github地址:github.com/pwittchen/R…
colorpicker 顏色畫板選擇庫
類似的庫也有很多,但還是喜歡這個。
Github 地址:github.com/QuadFlask/c…
BGAQRCode-Android 二維碼掃描專案
作者本身也是改造的別人的一個庫,如果你的專案中需要二維碼掃描且同時要求不是太高,可以考慮使用此庫。
Github 地址:github.com/bingoogolap…
MPAndroidChart 圖表庫
在 Android 開發中使用過圖表的,應該都會知道這個庫吧。這個庫是真心強大的不能強大的開源庫,能滿足你大多的圖表圖需求了。
Github 地址:github.com/PhilJay/MPA…
material-calendarview 材料設計日曆控制元件
很漂亮的一個日曆控制元件,可擴充性也很不錯。
Github 地址:github.com/prolificint…
flexbox-layout 盒子佈局控制元件
Github 地址:github.com/google/flex…
相應的教程也有很多,大家自行 Google 吧。
KenBurnsView 視差圖片控制元件
有時候專案中應用一下,這種效果還是很不錯的。
Github 地址:github.com/flavioarfar…
materialsearchview 材料設計搜尋框
Github 地址:github.com/MiguelCatal…
MagicIndicator 指示器庫
這個庫,目前發現多多少少還是有一點bug的,記得鴻洋大神也開源一個差不多的庫,也挺不錯的可以自行搜尋一下。
MagicIndicator 地址:github.com/hackware199…
Android應用自動更新庫(android-auto-update)
一個應用本地自動更新的庫,Dialog & Notification 兩種形式都支援,還是很不錯的。
專案地址:github.com/feicien/and…
Slidinglayout 果凍彈跳效果
這種效果在QQ上大家應用很常見,一般情況下都是用在 WebView 上吧,當然你還可以用在其他地方,發揮你的想象力。
Github 地址:github.com/HomHomLin/S…
SlidingTutorial-Android 引導頁
根據Demo直接使用,可定製的東西很少,當然引導頁本身也沒什麼可定製的,就看自己喜歡不喜歡這個引導頁的設計。這裡給出了兩個庫,我在應用中採用的是第一個,大家欣賞一下就行了。
SlidingTutorial-Android專案地址:github.com/Cleveroad/s…
AppIntro Github 地址:github.com/apl-devs/Ap…
Android 許可權的動態申請
從 Android 6.0 開始,部分高階許可權需要動態申請,在以前的版本中是在安裝應用時一次性許可所有許可權的申請,但是 6.0 以後,安裝後只會預設允許部分低許可權,高階許可權需要你手動申請使用者開通,如果你不做申請在應用許可權的介面會閃退崩潰。
相信一線開發者早就知道這些了,這裡給出幾個可以幫助你動態申請許可權的庫:
- PermissionsDispatcher 地址(目前應用中使用的是這個):github.com/hotchemi/Pe…
- RxPermissions 地址:github.com/tbruyelle/R…
- easypermissions 地址(貌似大家更青睞這個,不知道為什麼):github.com/googlesampl…
Android 圖片手勢控制元件
Github 地址:github.com/boycy815/Pi…
結尾
好了,對庫就總結這麼多吧。如果大家在玩“小秋魔盒”時遇到什麼問題都可以在下方留言,如果對應用中的某個功能的實現效果有疑問也可以下方留言,如果我感覺有必要的話,會寫一些相應的教程給大家。
對於“小秋魔盒”原始碼,目前不能放出來,一方面現在剛剛完成,程式碼格式什麼的寫的都比較隨意,也可能避免不了的存在許多bug;另一方面應用中的部分功能還沒有完善,還是一個不完整的應用。我會在合適的時機把原始碼放到 Github 上。(已經上傳原始碼)
目前也已經在 Github 上建了相應的專案,同時也在上面更加詳細的總結了用到的第三方庫和相關功能的實現,大家可以看看:
小秋魔盒 Github 地址:github.com/OCNYang/QBo…