多元化閱讀+深度閱讀,為用戶提供有價值的信息流,這是『多元日報』的定位和理念,產品從0到1的過程,學習了很多,收獲了很多,如無意外地將會持續維護下去,未來的日子會增加一些有意思的功能,敬請期待。
Toolbar、Snackbar、RecycleView、SwipeRefreshLayout、Activity跳轉動畫
參考Googole MVP Demo加上自己的一些思考,搭建了一個屬于自己的項目架構,雖然不一定很準確無誤,但起碼是我目前水平所能做到比較滿意的了
項目結構如下所示:
application :自定義的全局application類
commom :公共類庫
constants :常量類
data : 數據源,包括本地和遠程
network :網絡請求封裝,使用Retrofit+rxjava
share :分享管理類
utlis :常用工具類
widgets :自定義的View,如TabLayout、RowView
framework :全局框架,使用時必須繼承相關基類,如BaseActivity、BaseFragment、RxBus
module :業務邏輯層,按照相關功能劃分模塊
wxapi :微信分享回調所必須的集成類
滑動隱藏頂部Toolbar這種效果網上大多數Demo都可以看到,但隱藏底部的Tab就需要用到自定義Behavior了,注意這個Behavior是依賴于AppBarLayout的,當AppBarLayout里的Toolbar發生位移的時候底部的Tab也跟隨著向下隱藏,在此附上自定義的TabBehavior:
public class TabBehavior extends CoordinatorLayout.Behavior<View> { public TabBehavior(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) { return dependency instanceof AppBarLayout; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) { float translationY = Math.abs(dependency.getTop()); child.setTranslationY(translationY); return true; }}使用的時候引入這個Behavior即可
底部Tab封裝成TabLayout,添加一個Tab幾行代碼搞定:
ArrayList<TabLayout.Tab> tabs = new ArrayList<>(); tabs.add(new TabLayout.Tab(R.drawable.ic_bottomtabbar_news, R.string.tab_news, NewsFragment.class)); tabs.add(new TabLayout.Tab(R.drawable.ic_bottomtabbar_wechat, R.string.tab_wechat, WechatFragment.class)); tabs.add(new TabLayout.Tab(R.drawable.ic_bottomtabbar_about, R.string.tab_about, AboutFragment.class)); mTabLayout.setUpData(tabs, this); mTabLayout.setCurrentTab(0);主要是用到了友盟社會化分享,Bugly異常上報與應用升級,LeanCloud用戶反饋這些SDK,基本沒有什么大的技術含量,照著文檔集成就Ok了
開發的過程中曾遇到不少棘手的問題,參考閱讀過大神牛人們的文章,在此無法一一列出其名字,在此感謝他們的經驗分享與開源。
新聞熱點
疑難解答