原創(chuàng) 2017-11-13 鴻洋 鴻洋
僅作學(xué)習(xí)資料收集,請勿轉(zhuǎn)載,如有需要請關(guān)注原作者公眾號。
后臺經(jīng)常有人問我能不能推薦幾個完整項目用于學(xué)習(xí)。借著周末的機會,給大家推薦幾個,項目我基本都在本地運行過,并且會在
文章末尾提供每個項目的apk
用于大家下載預(yù)覽,如果你覺得不錯可以再學(xué)習(xí)源碼,這樣避免了大家還需要導(dǎo)入、運行后選擇,可以節(jié)省一定大家的時間。
此外,由于完整項目類很難在github上搜索,特意在wanandroid.com上開設(shè)了一個分類用于存儲完整的開源項目方便大家查找(最近工作太忙,wanandroid開發(fā)進(jìn)度比較慢~~)。
下面開始推薦的項目吧~
1 diycode客戶端
Diycode 社區(qū)客戶端,相信很多人應(yīng)該都知道這個社區(qū),偶爾會有一些質(zhì)量很高文章、討論等。
他們不但開源了客戶端,而且提供了一套SDK,如果你想要自己動手開發(fā)一個練手項目,是個不錯的選擇。
此外,為了便于理解項目源碼,他們在ReadMe中提供了幾篇技術(shù)文章:
01 - 整體架構(gòu)
02 - 緩存 WebView 中的圖片
03 - 點擊網(wǎng)頁圖片查看大圖
04 - API 的封裝哲學(xué)
05 - 使用抽象類節(jié)省 1000 行代碼
這些文章不僅能夠方便大家理解,也可以用來積累知識~
2 咕咚翻譯app


一個實現(xiàn)『劃詞翻譯』功能的 Android 應(yīng)用 ,可能是目前 Android 市場上翻譯效率最高的一款應(yīng)用。
如果你經(jīng)常在手機上閱讀文章,偶爾遇到一些英文單詞需要翻譯,你只要在當(dāng)前頁面“劃詞”即可實現(xiàn)翻譯,該app非常實用,當(dāng)然里面也包含一些技術(shù)值得你花時間去學(xué)習(xí):
1、全程使用 Dagger2 對項目進(jìn)行類依賴管理
2、項目使用標(biāo)準(zhǔn)的 MVP 架構(gòu),關(guān)于 MVP 的一篇博客
3、實現(xiàn)對粘貼板的監(jiān)聽以及訪問
4、無需權(quán)限顯示懸浮窗(6.0懸浮窗權(quán)限適配)
5、使用 RxJava 探索函數(shù)式編程
6、使用 Retrofit2 進(jìn)行網(wǎng)絡(luò)請求
7、開機自啟動
8、Android 6.0 自定義文本操作欄
3 開眼視頻學(xué)習(xí)項目

做的非常精致,界面非常優(yōu)雅,功能也處于相對完畢的狀態(tài)。最重要的是是使用kotlin編寫的,如果你正在或者想要學(xué)習(xí)kotlin,通過項目去學(xué)習(xí)要比通過文字來學(xué)習(xí)快得多。
同時在Readme頁面,作者也對kotlin的特性有一些初步的介紹。如果你現(xiàn)在時間較為充足,不妨學(xué)習(xí)下kotlin~
程序僅供學(xué)習(xí)交流, 不可用于任何商業(yè)用途
https://github.com/LRH1993/Eyepetizer-in-Kotlin
4 仿今日頭條學(xué)習(xí)項目
你可以認(rèn)為這是一個遵循Material Design風(fēng)格的第三方的頭條客戶端,功能已經(jīng)相當(dāng)完備,
, 聚合了新聞/段子/圖片/視頻/頭條號內(nèi)容, 沒有廣告, 僅僅只有存粹的閱讀, 不斷完善中, 采用 MVP + RxJava + Retrofit 架構(gòu)的項目~
包含技術(shù):
基本遵循 Material Design 設(shè)計風(fēng)格
抓包獲取今日頭條API
使用 Google 官方 MVP 架構(gòu)
DrawerLayout + NavigationView + BottomNavigationView 搭配使用
RxBus 代替 EventBus 進(jìn)行組件之間通訊
ViewPager 搭配 Fragment 懶加載
SwipeRefreshLayout 搭配 RecyclerView 下拉刷新上拉加載
自定義 BottomNavigationBehavior 實現(xiàn)上滑隱藏下滑顯示
RxJava + Retrofit2 + OkHttp3 做網(wǎng)絡(luò)請求
OkHttp3 對網(wǎng)絡(luò)返回內(nèi)容做緩存, 還有日志、超時重連、頭部消息的配置
V層基類的構(gòu)建, 包括 BaseActivity 和 BaseFragment , 對外提供了相同的接口
使用原生的夜間模式
解決側(cè)滑返回與 View 沖突問題
內(nèi)置 3 款 Logo, 隨意切換
使用 CoordinatorLayout 、 AppBarLayout 、 CollapsingToolbarLayout 、 BottomSheetDialog 等等新控件
使用 7.0 新工具 DiffUtil , 不再無腦 notifyDataSetChanged
使用 ItemTouchHelper 實現(xiàn)今日頭條的頻道排序、頻道移動, 參考 ItemTouchHelperDemo
使用 RxBinding 優(yōu)雅實現(xiàn)搜索請求
使用 RxLifecycle 綁定 RxJava 生命周期
使用 Travis Cl 持續(xù)集成
更加重要的是,作者雙11還在更新代碼,是個相當(dāng)不錯的學(xué)習(xí)項目~~
程序僅供學(xué)習(xí)交流, 不可用于任何商業(yè)用途
https://github.com/iMeiji/Toutiao
5 仿斗魚學(xué)習(xí)項目
高仿程度令人咋舌~光是UI和一些特效都夠?qū)W習(xí)相當(dāng)一段時間了。
涉及到的一些第三方如下:
彈幕三方庫:DanMu
輪播圖:BGABanner
刷新加載控件XRefreshView
導(dǎo)航欄控件 FlyCoTabLayout
彈幕與房間加密參考項目:斗魚項目
直播視頻播放器 :vitamio播放器 (備注:直播視頻格式:HLS,RTMP)
程序僅供學(xué)習(xí)交流, 不可用于任何商業(yè)用途
https://github.com/TeamCodeForGit/DouYu
好了,以上項目我都在本地導(dǎo)入運行過,為了節(jié)省大家的時間,如果你希望看到實際的運行效果后然后再選擇其中一個進(jìn)行學(xué)習(xí),可以在公眾號內(nèi)回復(fù)1113,為大家準(zhǔn)備了這幾個apk下載。
想必會有朋友會遇到導(dǎo)入不成功的問題,如遇問題盡可能將gradle相關(guān)配置修改為自己常用的版本,然后根據(jù)提示解決