https://github.com/yewei02538/TodayNews
一個仿今日頭條的開源項目,是基于MVP+RxJava+Retrofit
自適應(yīng)Tab寬度可以滑動文字逐漸變色的TabLayout
主要是一些第三方庫的使用
多種Item布局展示->BaseRecyclerViewAdapterHelper
日夜間模式切換->MultipleTheme
新聞詳情我采用的是RecyclerView添加頭的方式添加WebView(當(dāng)然是Adapter里面添加),加載頁面成功之后獲取評論信息,點擊評論圖標(biāo)滑動至評論第一條,這里我是調(diào)用recyclerView.smoothScrollToPosition(1);
視頻播放我使用的是JieCaoVideoPlayer,一群大牛封裝的代碼,底層實際使用ijkplayer,視頻源均使用非正常手段獲取,視頻源地址分析請看我的另一篇博客手?jǐn)]一個今日頭條視頻下載器
在使用MultipleTheme的時候唯一的缺陷就是需要在布局里面大量使用到自定義控件,這對于我們的項目而言,布局看著很冗余,也有點惡心。。我有時候就在想,那我可不可以寫原生控件,然后在特定的時機(jī)來個偷梁換柱換成我們的自定義控件呢?似乎好像是可以的,當(dāng)我們加載布局的時候最終都會用LayoutInflater來加載,所以我打算從這里入手,看源碼我發(fā)現(xiàn)有一個接口可以利用->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);? ? }
果然功夫不負(fù)有心人,如果我們實現(xiàn)了這個接口,最終加載布局的時候那么就會調(diào)用onCreateView在這里面來實現(xiàn)偷梁換柱替換成我們的自定義控件
修復(fù)欄目刪除崩潰
修改首頁多個頻道顏色漸變?yōu)?a target="_blank" rel="nofollow">ColorTrackTabLayout
加入頻道存儲至本地
添加修改或移動頻道首頁聯(lián)動更新
加入加載中動畫
基本框架以及首頁獲取新聞數(shù)據(jù)展示、日夜間切換
加入視頻解析以及播放功能
微頭條
無圖模式
加入今日頭條的下拉刷新
加入真實數(shù)據(jù)(登陸,注冊、收藏等),使用Bmob后端云
加入個人主頁、搜索等未寫界面
待添加...