前言
看到众多大神纷纷有了自己的开源项目,于是自己琢磨着也想做一个开源项目来学习下,因为每次无聊必刷的 app 就是今日头条,评论简直比内容都精彩,所以我打算仿今日头条来练练手,期间也曾放弃过,也遇到很多坑,拿出来跟大家分享一下,喜欢的记得给个 Star,当作是给我的鼓励和动力吧。
源码链接
https://github.com/yewei02538/TodayNews
PS :有兴趣的加入Android工程师交流QQ群:752016839 主要针对Android开发人员提升自己,突破瓶颈,相信你来学习,会有提升和收获。
1 效果图
2第三方库
-
BaseRecyclerViewAdapterHelper
-
ImageLoader
-
Retrofit
-
RxJava
-
ButterKnife
-
MultipleTheme
-
ColorTrackView
-
Gson
-
JieCaoVideoPlayer
3 技术要点
-
主要是一些第三方库的使用
-
首页顶部导航使用的 hongyang 大神的 ColorTrackView 然后做了一下封装来实现滑动渐变效果
-
多种Item布局展示->BaseRecyclerViewAdapterHelper
-
日夜间模式切换->MultipleTheme
-
个人中心 自定义 ScrollView 实现下拉图片放大
-
新闻详情我采用的是 RecyclerView 添加头的方式添加 WebView(当然是Adapter 里面添加),加载页面成功之后获取评论信息,点击评论图标滑动至评论第一条,这里我是调用
recyclerView.smoothScrollToPosition(1);
-
视频播放我使用的是 JieCaoVideoPlayer,一群大牛封装的代码,底层实际使用 ijkplayer,视频源均使用非正常手段获取,视频源地址分析请看我的另一篇博客 手撸一个今日头条视频下载器 http://www.weyye.me/detail/today-news-video/
问题1
在使用 MultipleTheme 的时候唯一的缺陷就是需要在布局里面大量使用到自定义控件,这对于我们的项目而言,布局看着很冗余,也有点恶心。。我有时候就在想,那我可不可以写原生控件,然后在特定的时机来个偷梁换柱换成我们的自定义控件呢?(比如我们布局写 RelativeLayout---转换成 MyRelativeLayout),似乎好像是可以的。
思路1
当时想到一个最简单最快实现的方法,也就是替换,我在布局里面写原生控件,然后在用工具全局替换成我们的自定义控件,但是假如我们换了包名,那就需要重新替换,这无疑是不易扩展的,所以这个方法放弃掉
思路2
不知道大家有木有发现就是,我们在布局里面写上Button
、ImageView
、TextView
等这些控件的时候,在 5.0 以上运行的时候实际变成了AppCompatButton
、AppCompatImageView
、A