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'
- MVP+Dagger2+Retrofit2+Rxjava搭建的一个电影相关的Demo
- 按照Google官方MVP+RxJava+Retrofit2+Dagger2的Demo自己另做一个,进行讲解。
- 最近很火的MVP+Retrofit2+rxjava+Dagger2框架 -- MVP
- MVP+RxJava+Retrofit2+Dagger2
- owspace 是基于 MVP+Dagger2+Retrofit2.0+Rxjava 的 APP
- android之dagger2+rxjava+retrofit2+mvp架构的结合
- MVP+Dagger2+Retrofit2.0+Rxjava
- MVP模式+Dagger2+Rxjava+retrofit2+lambda表达式 … retrofit2带进度的上传下载
- Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo
- 清晰的MVP-封装 Retrofit2+Rxjava+Lamda+dagger2(可直接使用)
- mvp+retrofit2+rxjava+dagger框架的简单搭建
- Dagger2+Retrofit2+RxJava练习、Mvp简介
- Retrofit2-RxJava-Dagger2-MVP完美封装
- 一个例子包含mvp、rxjava以及retrofit2的使用
- MVP+Retrofit2+RxJava使用方法demo
- 简单实用的mvp+retrofit+rxjava+dagger2
- Retrofit2.0+RxJava+MVP+Bmob的使用
- 自己对MVP+Retrofit2+RxJava的理解
- 指针的算术运算
- win10 uwp 后台获取资源
- C++之继承与派生类
- 秒破 "2 --- 50" bug
- 打字小游戏
- MVP+Dagger2+Retrofit2+Rxjava搭建的一个电影相关的Demo
- 最小费用最大流模板
- cocos creator(十二)问题
- LeetCode #85
- Hibernate基础之增删改查
- win10 uwp 列表模板选择器
- JAVA基础整理
- 9-30NOIP模拟赛总结
- 一掬斑斓