您的位置:首页 > 大数据 > 人工智能

仿Airbnb首页的实现

2016-09-19 09:56 621 查看
这几天项目进行改版,将首页变成Airbnb那种左右滑动的形式。

由于刚开始想错了方向,使用RecyclerView来实现,后面发现和想象中的不一样,RecyclerView是一条线,而viewpager是一个个点的连接。

所以用SwipeRefreshLayout{ScrollView{Viewpager}}来实现。

在滑动冲突这边之前查看了很多demo,最后通过重写dispatchTouchEvent对初试位置和滑动的X、Y进行判断,在Move的时候进行判断,我这边是根据滑动的距离进行判断,再通过getParent().requestDisallowInterceptTouchEvent(false),false是代表父view拦截滑动,true的话是禁止父view拦截。

在滑动到第二个到倒数第二个的时候,两边会显示上一个和下一个的对象,这里的话是需要在viewpager中设置margin,自定义ChildViewPager继承Viewpager,布局属性如图。

<com.estay.apps.client.choice.ChildViewPager
android:id="@+id/xxx"
android:clipChildren="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="22dp"
android:layout_marginRight="15dp">
</com.estay.apps.client.choice.ChildViewPager>


由于adapter,没有显示在页面上的对象是不会加载的,所以在滑动的时候,滑到下一个页面才会加载下下个对象,为了更好的用户体验,这里可以在初始化viewpager的时候加上:

mHotApartmentView.setOffscreenPageLimit(2);

我这边默认的缓存大小是2,意味着在加载的时候会默认缓存两个对象,由于上一个对象未滑出屏幕,而且已加载完成,所以当滑动到下个页面的时候,下下个对象就已经存在,这样用户在使用的时候能够更舒适。

如果首页数据量比较大的话,可以考虑在第一次拉数据的时候,将数据存入缓存,init的时候将上一次数据载入进去,等本次数据加载完再更新。

~~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: