Android仿今日头条的开源项目-TodayNews

https://github.com/yewei02538/TodayNews

一个仿今日头条的开源项目,是基于MVP+RxJava+Retrofit

Blog

Android仿今日头条的开源项目

自适应Tab宽度可以滑动文字逐渐变色的TabLayout

Apk

点击下载

第三方库

ColorTrackTabLayout

BaseRecyclerViewAdapterHelper

ImageLoader

Retrofit

RxJava

ButterKnife

MultipleTheme

Gson

JieCaoVideoPlayer

技术要点

主要是一些第三方库的使用

多种Item布局展示->BaseRecyclerViewAdapterHelper

日夜间模式切换->MultipleTheme

新闻详情我采用的是RecyclerView添加头的方式添加WebView(当然是Adapter里面添加),加载页面成功之后获取评论信息,点击评论图标滑动至评论第一条,这里我是调用recyclerView.smoothScrollToPosition(1);

视频播放我使用的是JieCaoVideoPlayer,一群大牛封装的代码,底层实际使用ijkplayer,视频源均使用非正常手段获取,视频源地址分析请看我的另一篇博客手撸一个今日头条视频下载器

在使用MultipleTheme的时候唯一的缺陷就是需要在布局里面大量使用到自定义控件,这对于我们的项目而言,布局看着很冗余,也有点恶心。。我有时候就在想,那我可不可以写原生控件,然后在特定的时机来个偷梁换柱换成我们的自定义控件呢?似乎好像是可以的,当我们加载布局的时候最终都会用LayoutInflater来加载,所以我打算从这里入手,看源码我发现有一个接口可以利用->Factory,这个接口有一个方法

publicinterfaceFactory{/*** Hook you can supply that is called when inflating from a LayoutInflater.* You can use this to customize the tag names available in your XML* layout files.**

* Note that it is good practice to prefix these custom names with your* package (i.e., com.coolcompany.apps) to avoid conflicts with system* names.** @param name Tag name to be inflated.* @param context The context the view is being created in.* @param attrs Inflation attributes as specified in XML file.** @return View Newly created view. Return null for the default*        behavior.*/publicViewonCreateView(Stringname,Contextcontext,AttributeSetattrs);    }

果然功夫不负有心人,如果我们实现了这个接口,最终加载布局的时候那么就会调用onCreateView在这里面来实现偷梁换柱替换成我们的自定义控件

版本

v1.0.1

修复栏目删除崩溃

修改首页多个频道颜色渐变为ColorTrackTabLayout

加入频道存储至本地

添加修改或移动频道首页联动更新

加入加载中动画

v1.0.0

基本框架以及首页获取新闻数据展示、日夜间切换

加入视频解析以及播放功能

TODO

微头条

无图模式

加入今日头条的下拉刷新

加入真实数据(登陆,注册、收藏等),使用Bmob后端云

加入个人主页、搜索等未写界面

待添加...

你可能感兴趣的:(Android仿今日头条的开源项目-TodayNews)