MVP+Dagger2+Retrofit2+Rxjava搭建的一个电影相关的Demo

来源:互联网 发布:手机画板软件免费版 编辑:程序博客网 时间:2024/06/08 07:39

MVP+Dagger2+Retrofit2+Rxjava搭建的一个电影相关的Demo

工作以来一直没有写博客的习惯,也许是有点懒吧,写点东西还是挺好的,算是巩固知识吧,由于写的比较仓促,表达能力有限,可能有些地方解释的不是很清楚,可以看下Demo,欢迎在下方评论,一起讨论一起进步~如有支持,不胜荣幸!

Github:https://github.com/FOnlyJack/PracticeFilmApplication

前言

本项目的所有数据感谢https://github.com/jokermonn/-Api提供的接口

声明

该数据的获取与共享之行为或有侵犯产品权益的嫌疑,若被告知需停止共享与使用,上述链接的作者会及时删除。请您暸解相关情况,并遵守产品协议。

说明

我给大家推荐这些技术学习的文章:

dagger2

理论:http://android.jobbole.com/82694/
官方: http://google.github.io/dagger/

mvp:

这个理论很简单,自己百度或者google吧
示例:https://github.com/googlesamples/android-architecture

retrofit2:

官方:http://square.github.io/retrofit/

rxjava:

扔物线:http://gank.io/post/560e15be2dca930e00da1083
大头鬼:http://blog.chinaunix.net/uid-20771867-id-5187376.html

对上面的技术有一定的了解后,我们开始一个示例:

项目展示




项目描述

先说一些项目的大体结构,了解这个看代码就更容易,当然了,每个人写代码都有自己的一套风格,萝卜白菜各有所爱0^0 哈哈

这里写图片描述

知识梳理

1.首页底部四个Fragment的切换我使用的是FragmentTabHost继承的是tabhost,不是官方的那个FragmentTabHost.
2.主页面的列表热映和待映的切换使用时Tablayout和ViewPager

 TabPagerAdapter tabPagerAdapter = new TabPagerAdapter(getChildFragmentManager(), getActivity(), mViewList);        viewPager.setAdapter(tabPagerAdapter);        autoTabLayout.setupWithViewPager(viewPager);        autoTabLayout.setTabMode(TabLayout.MODE_FIXED);        for (int i = 0; i < autoTabLayout.getTabCount(); i++) {            TabLayout.Tab tab = autoTabLayout.getTabAt(i);            tab.setCustomView(tabPagerAdapter.getTabView(i));        }

3.首页城市选择器用的是https://github.com/zaaach/CityPicker这个仿美团的城市选择器.
4.首页电影列表使用的RecyclerView和SwipeRefreshLayout,而adapter使用的是BaseRecyclerViewAdapterHelper里的BaseQuickAdapter,减少adapter里的多余的代码,像这样:

 helper.setText(R.id.tv_frag_hit_rv_content, item.getTCn())                .setText(R.id.show_pingfen, r)                .setText(R.id.tv_commonSpecial, item.getCommonSpecial())                .setText(R.id.tv_NearestCinemaCount, stringBuilder.toString());

5.电影详情页使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout 实现可联动的效果,CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承自FrameLayout。给它设置layout_scrollFlags,可以控制它包裹的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件。AppBarLayout 可以管理其中的控件在内容滚动时的行为。
这里写图片描述
我这里有嵌套了SwipReFreshLayout实现下拉刷新,但是得设置AppBarLayout的addOnOffsetChangedListener监听,当AppBarLayout在垂直方向的偏移量改变时调用,从而控制是否下拉刷新.
6,视频播放使用的是jcvideoplayer,实现列表点击播放.

第三方库

compile 'com.jakewharton:butterknife:8.5.1'apt 'com.jakewharton:butterknife-compiler:8.5.1'compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:converter-gson:2.1.0'compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'compile 'io.reactivex:rxandroid:1.2.1'compile 'io.reactivex:rxjava:1.2.6'compile 'com.google.dagger:dagger:2.9'compile 'com.orhanobut:logger:1.15'compile 'com.zhy:autolayout:1.4.5'compile 'com.alibaba:fastjson:1.2.28.odps'compile 'com.squareup.okhttp3:logging-interceptor:3.6.0'compile 'com.android.support:design:25.2.0'compile 'com.zhy:base-rvadapter:3.0.3'compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.android.support:support-v4:25.2.0'compile 'com.zaaach:citypicker:1.1'compile 'org.greenrobot:eventbus:3.0.0'compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.7'compile 'com.android.support:cardview-v7:25.2.0'compile 'fm.jiecao:jiecaovideoplayer:5.5.2'compile 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar'
原创粉丝点击