从写第一篇今日头条高仿系列开始,到现在已经过去了1个多月了,其实大体都做好了,就是迟迟没有放出来,因为我觉得,做这个东西也是有个过程的,我想把这个模仿中一步一步学习的过程,按照自己的思路写下来,在根据碰到的知识点和问题,并且罗列出这些东西的知识点和使用方法。如果你单纯的把做好的一个DEMO拿去改改用用,那样,你永远不知道里面用到的内容是涉及到什么知识点,用什么方法实现,那样就没有多少提升价值而言了。
近期都是在通过开发文档把以前的一些东西重新过一遍,看好多网友都催促想要新版本的,那我就在这里先把最后完善版本的放出来,看看大家有什么地方可以用的到,学的到的,那样就不枉此篇博文了。
近期也在尝试着使用GITHUB,所以我把这个的源码也传到了GITHUB上,日后的修改应该不会在开一篇特定的博文去说明改了什么,一般也是小改动了,就直接提交到GITHUB上就可以了。如果希望看到里面有什么改进的,可以关注我的GITHUB。
我的GITHUB地址是:https://github.com/Rano1 (谢谢支持)
有的时候,模范别人应用其实就是一种开发的学习手段,因为如果自己去开发,没有UI没有交互流程,那样的话,可能会比较难下手,当有了别人的交互流程和一些资源,你就可以去自己考虑如果实现相关功能,如何达到类似效果。可能你的方法没那么完善,实现效果没原版的那么绚丽,可是这些都带有你的思想,这就足够了。开源的魅力就是,在自己的思想基础上,还能通过大神的编码习惯和实现方法,自己从他们的代码中感悟出自己的东西,并且学以致用。
之前没事的时候模范过布卡漫画,功能UI也大体实现了,可是没有梳理,所以代码方面会比较乱,并且有的系统方法已经被遗弃,所以要跟上时代的步伐,要把代码里面的不足之处重新优化一遍,如果有机会,日后会开相关的博文放出对应的DEMO。
下面把 “今日头条”开发过程中的知识点、开发流程做个总结,并且贴上相关的博文链接,以便更好的查看。
开发流程
第一篇:(Android高仿系列)今日头条 --新闻阅读器 (一)
涉及到的知识点有
1.slidingmenu.lib (侧拉菜单包) 使用方法配置以及下载:点击这里
实现:客户端中左右2边侧拉菜单
2.命名规范可以参考:android命名规范
实现:源码中包、类、方法名称的统一
3.如何反编译:反编译就这么简单
实现:客户端中资源文件的获取
4.Fragment以及HorizontalScrollView的使用,以及重写HorizontalScrollView
实现:客户端中主页头部滑动菜单以及对应内容的展示
第二篇:(android高仿系列)今日头条 --新闻阅读器 (二)
涉及到的知识点有
1.如何自定义布局:android 自定义控件 使用declare-styleable进行配置属性(源码角度)
实现:自定义控件布局(如 重写开关按钮:SwitchButton 开关按钮 的多种实现方式 (附源码DEMO))
2.PopupWindow的使用。
实现:每个列表中更多操作的按钮展示。android
仿 新闻阅读器 菜单弹出效果(附源码DEMO)
3..Android-Universal-Image-Loader (图片的异步加载包) 使用方法配置以及下载:点击这里
实现:客户端中网络图片异步显示缓存
第三篇:(就是本篇)
涉及到的知识点有
1.自定义控件,重写控件的相关方法
实现:
(1)频道管理(带拖拽,动画)Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO
(2) 新闻列表中每个字段按照时间进行排列,并且带有悬浮效果
(3)城市选择列表中的城市信息按照首字母进行排列,并且带有悬浮效果
注意:(1)通过重写GridView。(2)和(3)通过重写ListView,之后通过接口判断是否在最最上方了,进行状态变更,DEMO的代码中可以清晰看懂
2.SQLITE数据库的使用
实现:保存用户设置的频道信息
3.Activity之间的动画跳转方式
4.Animation动画类的相关知识
实现:频道管理中频道的移动动画
5.WebView的相关知识和 jsoup库解析HTML
实现:新闻详情的查看、排版,图片信息的提取。(这块没深入研究,知识从别人那边借鉴了点放进去的)
6.重写ViewPager和ImageView
实现:图片浏览和通过手势放大缩小
7.GestureDetector手势类及OnGestureListener手势监听类的使用
实现:新闻详情页面根据手势滑动来关闭该页面
最新版本的截图
总结
通过了这么一系列的发开过程,我了解了,自己很多方面的知识点不是很扎实,可能是以前的拿来主义造成了这样子的情况,所以,近期目标结合开发文档和系统源码,了解应用层和框架层的各个主要知识点,并且内化,之后深入强化学习,根据学习情况将所学知识点用于实践开发,开发出更多完善的开源应用。可能有很多地方不足,希望提出来,会及时改正。
|
|