竹翎(Material風格的APP,附源碼)

今天忽然想整合一下所學的知識,理一個框架出來,順帶熟悉一下谷歌的Material Design。工做這幾年,很遺憾,所在公司都只看重iOS開發,安卓的要按照IOS的設計稿來開發,徹底沒有安卓的風格,難免扼腕嘆息。百忙之中,抽出時間,原本想理一個框架出來,看來還有許多待完善的地方,後面會繼續完善。先看效果圖吧(因爲大小不能超過2MB,因此壓縮了不少,實際效果要好不少)APK下載點這裏 android

圖片描述

項目的風格爲谷歌的Material風格,其中主要運用到了MVP模式和rxandroid框架,都是簡單集成,時間倉促,還沒來得及很好封裝。主要是Material開發還不是很火,起碼就目前市面上看來,比較少產品徹底依照Material風格來設計的,我知道的,有BiliBili、SegmentFault等少數幾個,大多數產品只是走馬觀花般稍微運用了一些Material的元素。我想,產品畢竟注重功能和穩定。由於Material開發的過程當中,確實有不少坑,好比,NestedScrollView在與AppBarLayout一塊兒滑動的時候,就會莫名出現卡頓,爲了解決這個問題,我苦苦搜尋3天,沒能找到辦法,只好用了一個開源庫smooth-app-bar-layout來解決,這個開源庫確實還不錯,但與其餘開源框架或谷歌原生控件結合使用的時候,又會有這樣那樣的問題出現,好比,使用RecyclerView時要設置一個header才能正常顯示,參考這裏git

代碼的大致結構以下:
圖片描述github

adapter主要放了主界面ViewPager的adapterapi

api原本是想放置Retrofit相關的接口的,結果運行了個demo沒有成功,就不了了之了,如今才作了一個網絡請求,直接用的okhttp和rxandroid結合,並無封裝成很好的工具框架,你們能夠先嚐試,我有時間就完成封裝。網絡

Event主要放置EventBus的一些事件,都是簡單的事件,好比通知其餘界面刷新UI等。有人說,你這人裝,用了RxAndroid爲啥不用RxBus,還用什麼EventBus。我只能說,蘿蔔青菜各有所愛,EventBus是個好工具,用起來很是方便,但我不會濫用。app

listener目前尚未寫什麼,裏面放了一個類,原本是用來監聽RecyclerView滾動,以實時控制AppBarLayout滾動的,可是這個僅適用於單個Activity的狀況,因爲主界面有一個ViewPager包含多個Fragment,若是再用這個監聽的話,那狀況複雜得很,並且切換不一樣Fragment時AppBarLayout會閃動,我就直接用了谷歌原生的Material元素來控制了。雖然在包含NestedScrollView的Fragment,向上滾動的時候,部分機型會有卡頓的狀況,好比華爲P9,其餘手機如一加、nexus5暫時沒發現這種狀況,這實際上是谷歌的一個bug,體驗了一下Bilibili的APP,發現這個bug一樣存在,暫時尚未很好的替代方案,固然smooth-app-bar-layout能夠解決這個bug,可是集成起來不太容易,並且擴展性不太好,好比在smooth-app-bar-layout和smarttablayout之間,你只能選擇一個,由於他們的初始化方法不一樣,由於我必需要用到smarttablayout的漂亮切換效果,因此主界面直接採用了原生的Material控件。框架

ui是最主要的代碼集中地,我爲何沒有寫fragment、activity等包?由於我建議以功能模塊劃分邏輯功能包,而不是根據文件類別劃分,由於同一個界面的功能實現模塊就是一個集合,不必把它們強行分開來按文件類型歸檔,後面MVP的代碼也是一個功能放在一個包裏,這樣找代碼的時候,看到包名一會兒就能夠找到相關功能的全部代碼了。ide

utils裏面放置一些公共工具類,好比Toast、獲取ToolBar高度等工具

widget裏面放置一些開源控件,好比LoadMoreRecyclerView等動畫

library項目主要放置了鴻洋大神的CommonAdapter

項目還用到了不少開源框架,有好幾個功能點都是直接拿來,還沒來得及更改,慚愧,感謝如下大神或開源項目:
多彩資訊客戶端

代碼家
鴻洋大神

/*網絡請求*/
compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'

/*tab切換*/
compile 'com.ogaclejapan.smarttablayout:library:1.6.1@aar'
compile 'com.github.bumptech.glide:glide:3.7.0'

/*右側菜單*/
compile 'com.yalantis:contextmenu:1.0.7'

/*能夠隱藏toolbar的RecyclerView,能夠用,但不夠流暢,用系統監聽代替了*/
/* compile 'com.github.ksoichiro:android-observablescrollview:1.6.0'*/

/*EventBus*/
compile 'org.greenrobot:eventbus:3.0.0'

/*Material風格的下拉刷新*/
compile 'com.cjj.materialrefeshlayout:library:1.3.0'

compile 'me.henrytao:smooth-app-bar-layout:25.1.0.0'

/*compile 'com.github.bumptech.glide:glide:3.6.0'*/

/*圓形頭像*/
compile 'de.hdodenhof:circleimageview:1.3.0'

/*列表滾動動畫*/
compile 'jp.wasabeef:recyclerview-animators:2.2.6'

ContextMenu

再次感謝,最後附上本項目github地址,若是你們以爲還不錯的話就點個star吧。

相關文章
相關標籤/搜索