Gc(game circle 游戲圈) app開發(fā)總結
聲明:Gc是本人利用閑暇時間開發(fā)的一款開源app,所有代碼開放開源,不會也不允許任何人作為商業(yè)用途。
Gc總體數(shù)據(jù)來源:首先Gc大部分數(shù)據(jù)是來自多玩論壇網(wǎng)站數(shù)據(jù),對于lol相關查詢來自http://API.xunjob.cn/提供的免費API(不知道怎么了 目前訪問不了了),段子內(nèi)容來自http://api.avatardata.cn/Joke/提供的免費API,美女圖片資源來自http://gank.io/api/提供的免費API,數(shù)據(jù)存儲服務提供由leanClound提供免費的數(shù)據(jù)存儲。
GC總體設計思想:app整體數(shù)據(jù)采用jsoup結合RxJava實現(xiàn)對多玩論壇數(shù)據(jù)對抓取,通過jsoup訪問多玩論壇網(wǎng)站,返回html樹,通過jsoup結合Rxjava解析,生成數(shù)據(jù)model,然后根據(jù)自己設定的UI顯示在客戶端,由于個人能力問題,不能解析到多玩論壇的登錄注冊流程,本人對多玩的數(shù)據(jù)只能實現(xiàn)瀏覽的功能。后來通過leancloud RestAPI數(shù)據(jù)存儲的支持,本人自定登錄注冊,帖子收藏等功能,實現(xiàn)了用戶可以在本app上進行注冊,登錄,設置用戶頭像,評論圖片的功能(其實某頭條就是這樣哈,就是把別人的網(wǎng)頁拿來給用戶看,在自己的服務器進行評論等功能。。。),首頁banner則是通過RxJava結合Retrofit發(fā)起請求訪問LOLAPI,查詢LOL數(shù)據(jù)。
GC的UI架構,UI架構是采用底部導航欄加上fragment切換實現(xiàn)。所有activity,fragment,model均繼承基礎類,實現(xiàn)了整體功能,風格上的統(tǒng)一,
Gc app本人認為你能學習到點:
1:首先是對父類的抽取,所有常有的方法,常量放在父類中,方便調(diào)用,雖然很多人都是知道的,但是仍有初入開發(fā)的小白不太了解,
2:自定義ViewGroup,個人感覺最酷炫的特效就是自己寫了一個loadingView(對,就是你看到那個一個笑臉在吃豆的加載動畫),這個loadingView只有那個笑臉是imageView,其余全是自己寫的View,放在一個ViewGroup,結合ObjectAnimation實現(xiàn)了笑臉從左至右的吃豆,自身的alpha不斷加深的動畫,(這里你可以學到自定義ViewGroup,自定義ViewGroup的onmeasure,onlayout,Animation的使用,弱引用,handler結合Runnable實現(xiàn)持續(xù)的功能)
3:自定義View(全部都在widget包下面),
(1)首先是底部導航欄,巧妙的結合animation通過一張顏色的圖片實現(xiàn)了點擊效果的切換。
(2)lableView:類似于支付寶上面的斜著的標簽,這個是我在Github上看到別人開源照著寫的一個,整體代碼都一致,只是作為個人練習,就是把別人的代碼拿來學習,消化,這個view我之前還試著寫過,效果不是很好(之前自己是通過drawRound+drawText就是在矩形上寫文字,效果很不好,測繪也很難,這個人的思路很好,寫在path上,path設置背景色,真的很有才,唯一的缺點是我忘了這個人github了不能去看)
(3)圓角圖片這個上面的方法是通過重寫imageView在onDraw之前在它的Layer上畫一個圓角,后來問學習了解了更多的方法,一種是通過drawable實現(xiàn),這是hongyang大神的博客上面的,還有一種是通過xperformMode的模式,這個網(wǎng)上還是有很多例子的。(就了解這么多了,大家可以補充)
(4)通過ItemTouchHelper實現(xiàn)了recyclerView位置變幻,這個也是看了別人的博客自己消化理解到。
(5)剩下那些view一般都是簡單的自定義View結合動畫自己寫著玩的。
(6)推薦一個很好的網(wǎng)站,這個人寫的真的超贊http://blog.csdn.net/harvic880925/article/details/38875149
最后本人在項目中練習學習到的東西:首先就是android app的整體架構,工具類的抽離,RxJava+retrofit + restAPI使用,MVP架構的練習,自定義View,自定義ViewGroup,業(yè)務的流程,recyclerView實現(xiàn)下拉刷新,上拉加載更多,一些簡單的設計模式的使用,公共組件抽離,android5.0轉場動畫的使用,android5.0新引入兼容包的使用,一些新部件的使用。。。。(應該還用了很多新的知識點,有點忘了,就不一一列舉了,大家在項目中自己看吧)
希望我這個完成了90&%的項目能給大家一定幫助。
最后附上項目地址:https://github.com/bolevw/GC.git