Android 开源漫画项目ComicMTC
前言
由于喜欢看漫画,顺便练练手,把最近学到的知识整合一遍,
在线漫画阅读器,项目采用 MVP + RxJava + Retrofit + Dagger2+rxlifecycle .功能上现在只是简单的基本功能。这篇文章主要是记录项目中的难点疑问,以及介绍这个项目
项目github 地址,如果对你有帮助,不妨点个start支持一下。感谢
总体的框架搭建
该项目采用的是MVP配合dagger2搭建,如有小伙伴对这些知识点不熟的可以参考下我个人的这几篇文章
MVP模式与封装
Dagger2讲解
1关于该项目MVP框架的一些解释:
如果你看了该项目的结构你会发现少了这个M层的实现类,我这边是直接让P担任了M的责任。
比如下面的该项目的某个P层的实现
/*** @author Lai* @time 2017/12/11 17:04* @describe 漫画业务桥梁P* @see SimplePresenter*/
public class ComicsPresenter extends BasePresenter<ComicsContract.View> implements ComicsContract.Model {@Overridepublic void requestHome(@MODE final int curMode) {//数据请求}
}
就让P层直接实现了M层的业务接口
按照规范来说这里应该还需要实例化一个Model层。通过Model在请求请求或处理数据
然后Model的实体类可以通过dagger2去管理实例会添加很多的仓库Module。因为有很多的model仅仅只是做网络请求的操作,不太复杂, 我觉得写的东西太多了,所以省去了M层。
如果你觉得需要Model层
你可以参考一下MVPArms开源项目:
https://github.com/JessYanCoding/MVPArms
MVPArms项目实例项目实例
https://github.com/GitLqr/LQRBiliBlili
文章推荐!!!!!!
安卓实践开发之MVP一步步实现到高级封装 - Losileeya - CSDN博客
浅谈Android中的MVP与动态代理的结合 - Jimmy_Yyj -CSDN博客
首页(HOME)分析
先看动图
布局分析
1.上下滑标题联动
关键字:AppBarLayout layout_scrollFlags
2.上下滑底部联动
这里有几种做法。
1.可以自定义Behavior。大概的做法就是监听变化的View从而实现对其底部的交互
2.监听AppBarLayout addOnOffsetChangedListener 调整底部导航偏移的Y轴 达到底部隐藏效果
mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {@Overridepublic void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {//调整底部导航偏移的Y轴 达到底部隐藏效果if (isSetBottomSheetHide)mBottomSheet.setTranslationY(-verticalOffset); }});
3.底部收藏联动
关键字:layout_behavior
一个神奇的控件——Android CoordinatorLayout与Behavior使用指南
看完就明白了!!
首页遇到的问题
1.底部收藏夹的RecyclerView滑动时,标题是会产生联动
解决的方案:
监听底部的收藏夹的状态:当完全打开的时候清除 ScrollFlags联动 参数、关闭时设置回去
/*** 改变搜索布局的行为 ScrollFlags** @param isScroll 是否滚动*/public void setSearchScrollFlags(boolean isScroll) {AppBarLayout.LayoutParams mParams = (AppBarLayout.LayoutParams) mSearchToolbar.getLayoutParams();if (isScroll) {mParams.setScrollFlags(5);} else {mParams.setScrollFlags(0);}mSearchToolbar.setLayoutParams(mParams);}BottomSheetBehavior.from(mBottomSheet).setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {@Overridepublic void onStateChanged(@NonNull View bottomSheet, int newState) {if (BottomSheetBehavior.STATE_EXPANDED == newState) {setSearchScrollFlags(false);} else if (BottomSheetBehavior.STATE_COLLAPSED == newState) {setSearchScrollFlags(true);}}@Overridepublic void onSlide(@NonNull View bottomSheet, float slideOffset) {}});
2.嵌套RecyclerView 问题
主页布局关系主要是CoordinatorLayout+FrameLayout+RecyclerView +RecyclerView 。画了个图你们感受一下
问题: 很奇怪,采取这样的布局方式时。当快速滑动的时候,里面的item的点击事件会失灵,不好点。要点击2次,或者停顿一会才恢复正常。也就是快速滑动里面的RecyclerView接受不到事件。
按照平常遇到事件冲突的解决方法是
父类ViewGroup重写onInterceptTouchEvent 根据逻辑判断是否要拦截。
或者子类调用下面的方法,告诉父类是否要拦截
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept);
起初是这个想法开始改造编写。但是发现这个嵌套失灵的问题解决了,但是与CoordinatorLayout的联动效果没了。这就尴尬了
后来Google了一下发现RecyclerView 有个方法叫做recyclerView.setNestedScrollingEnabled(boolean);
也可以解决嵌套的问题,但是CoordinatorLayout的联动效果也没了。
要想达到有联动,并且快速滑动时item点击不失灵。
最后我采取的方案是:
recyclerView.setNestedScrollingEnabled 配和 AppBarLayout.addOnOffsetChangedListener监听解决。
事件冲突的文章推荐
图解 Android 事件分发机制
Android事件分发机制详解:史上最全面、最易懂
3.RecyclerView 优化问题
可以看看我写的文章 RecyclerView的优化
首页的问题就暂时的到这里。
项目github 地址,如果对你有帮助,不妨点个start支持一下。感谢
不定期更新文章。不妨点个start支持一下未完待续!!
Android 开源漫画项目ComicMTC相关推荐
- 140款Android开源优秀项目源码
140款Android开源优秀项目源码 BeautifulRefreshLayout-漂亮的美食下拉刷新 https://github.com/android-cjj/BeautifulRefresh ...
- 2015年十大热门Android开源新项目
2015即将结束,又到了大家喜闻乐见的年终盘点时刻啦,今天给大家盘点一下2015年Android开发领域新出现的10大热门开源项目.数据来自于GitHub搜索,创建时间自2015年1月1日开始的新项目 ...
- Android开源工具项目集合
最近因为要去外派了,工欲善其事,必先利其器!所以又回顾了一下自己github上所收藏的项目,也算是温故而知新吧. 最流行的Android组件大全 http://www.open-open.com/l ...
- Android开源库项目集锦
一.兼容类库 ActionBarSherlock : Action Bar是Android 3.0后才开始支持的,ActionBarSherlock是让Action Bar功能支持2.X后的所有平台, ...
- Android开源经典项目
目前包括: Android开源项目第一篇--个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...
- 一些完整的Android开源app项目
android开源项目有很多,但是完整的app项目不多,下面是最近我 整理的一些开源app项目: 注: jcodecraeer网站上搜集了很多开源项目,更新很快,非常值得关注. 一.photoup 介 ...
- [Android]Android开源工具项目集合20160523
最流行的Android组件大全 http://www.open-open.com/lib/view/open1409108030307.html Android开源项目分类汇总 http://ww ...
- Android 开源优秀项目
BeautifulRefreshLayout-漂亮的美食下拉刷新 https://github.com/android-cjj/BeautifulRefreshLayout/tree/Beautifu ...
- 十个经典Android开源APP项目
Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...
最新文章
- Java学习笔记(九)--数组及Arrays类
- 学习历史预测未来,国防科大新模型实现未来事实预测SOTA
- c语言创建学生成绩表,C语言创建信息链表,求助
- OpenStack —— DevStack一键自动化安装
- 常见排序之——插入排序
- 我的内核学习笔记2:platform设备模型
- [USACO12OPEN]书架Bookshelf
- 解决PCoIP连接View 5.0虚拟桌面超时断开导致无法再次登录的问题
- 蔡工RK系列Android驱动开发入门视频课程
- linux sata硬盘热交换,学员原创-杨欢最详细西数硬盘热交换流程
- HLW8012电能测量芯片使用记录
- 常用iOS的第三方框架
- WINDOWS 7、windows server 2008、VISTA激活排斥
- NDB Cluster基本操作
- 高等数学:第五章 定积分(4) 定积分的换元法
- 抓包工具fiddler
- Python VTK计算曲面的高斯曲率和平均曲率
- Semaphore自白:限流器用我就对了!
- 警惕!程序员万字揭露被空姐骗到香港做传销的来龙去脉!
- 【清华大学课程】曼昆-经济学原理笔记(全集)