网易新闻客户端首页列表实现思路:
网易新闻客户端的实现主要涉及到三个部分:
1,viewFlow新闻轮播图;
2,pullToRefreshListView,下拉刷新的列表 3,将viewFlow和pullToRefreshListView进行结合的自定义图层。
实现步骤 1,viewFlow新闻轮播图的实现:新闻轮播图使用的是开源的viewFolw组件,在网上下载相应的viewFlow组件的源代码,并将 其放入自己的工程中。
2,pullToRefreshListView下拉刷新列表:下拉刷新的列表使用的是开源的pullToRefreshListView组件,与viewFlow组件一样 在网上下载相应的源代码,并与自己的工程进行合并。
3,将viewFlow作为view添加到pullToRefreshListView中,这样,网易新闻客户端的框架就搭建好了。
问题与解决办法 但是在实际操作中,我们会发现,自己实现的工程与真正的网易新闻客户端相差很多,主要是在滑动viewFlow的时候,listview同样会接收到触摸事件,导致两个事件相混淆,造成在滑动viewFlow的时候会使listview跟随滑动。
解决办法:尝试过很多种解决办法:
1 在viewFlow和pullToRefreshListView中进行修改,由于这两个开源的代码相对的复杂,贸然修改可能会破坏自身的逻辑,同时这两个组件分别为不同的代码,之间通信会存在困难,经过很多次的尝试,发现不能对两个组件进行修改,。
2 经过反复观察网易新闻,自己突然想到了图层的概念,我们可以自己添加一个图层 ,在这个图层中对事件进行拦截判断,然后分发给不同的组件进行处理,这样也不会破坏两个组件本身的逻辑,所以添加了一个Layout自定义图层,在这个图层中我对事件进行了重定向,当点击到viewflow这个区域时,我会进行判断,是水平滑动还是垂直滑动,如果是水平滑动 ,则将事件直接传递给viewflow进行处理,不传递给lisview,如果为垂直滑动,则之间将事件传递给listview处理。这样当左右滑动viewflow的时候不会干扰到listview;垂直滑动viewFlow的时候,就是由listview进行处理,上下滑动。
最重要的还是解决viewFlow添加到listview中后,对触屏事件干扰的处理,希望以上的思路能对您有所帮助!!
ViewFlow和下拉刷新的控件在网上可以找见,我这里也有,如有需要,请留言!!
如有错误,请指正!!