由NestedScrollView + RecyclerView实现
- 算准布局初始化后展示的高度
- 算准布局滑动触发到顶部titlebar的高度
- 算准数据加载后,布局高度的各种变化
- 适配各种屏幕
- 处理touch事件的传递
最后,来波动效打击,脑细胞都快死光光了
不过我还是挺了过来,让大家不必再关心计算过程,只处理自己的布局和数据展示就行了
-
TopLayout
demo中展示左边安全中心和右边定位按钮
-
BottomLayout
demo中以用车类型和上下车为例
-
RecyclerView
demo中利用多形态item,展示进行中行程、优惠券套餐、和活动广告信息为例
-
dependencies 下
implementation 'com.sk.xscrollview:xscrollview:0.0.4'
-
xml中
layout_width
和layout_height
必须是match_parent
,必须撑满全屏。 尽量不要放在垂直的线性布局中,titlebar
会使XScrollView
不能撑满全屏。<com.sk.xscrollview.XScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" app:routeLayout="@layout/item_new_land_route" app:couponLayout="@layout/item_new_land_coupon" app:activityLayout="@layout/item_new_land_activities" app:topLayout="@layout/layout_top_layout" app:bottomLayout="@layout/layout_bottom_layout" app:backgroundColor="@android:color/white"/>
app:topLayout
: 自定义顶部布局 TopLayout(不是屏幕的顶部)app:bottomLayout
: 自定义底部布局 BottomLayout(不是屏幕的底部)app:routeLayout
: 自定义未完成行程布局 RecyclerView itemapp:couponLayout
: 自定义优惠券套餐布局 RecyclerView itemapp:activityLayout
: 自定义活动广告布局 RecyclerView itemapp:backgroundColor
: 自定义从BottomLayout
往下布局的背景色
-
xScrollView.setTitleBar
,需要把TitleBar
传入XScrollView
中,这样才能触发动效。照demo实现下。 -
初始化
xScrollView.setInitItemViewListener(this);
public interface InitItemViewListener { void initRouteView(XScrollViewHolder holder, int position); void initCouponView(XScrollViewHolder holder, int position); void initActivityView(XScrollViewHolder holder, int position); void initTopLayoutView(View view); void initBottomLayoutView(View view); void animTopLayoutVisible(View view); void animTopLayoutGone(View view); void animTitleBar(boolean touchMoon); }
InitItemViewListener
接口中,有8个抽象方法void initRouteView(XScrollViewHolder holder, int position); void initCouponView(XScrollViewHolder holder, int position); void initActivityView(XScrollViewHolder holder, int position); void initTopLayoutView(View view); void initBottomLayoutView(View view);
上面5个实现后自行初始化对应的布局
animTopLayoutVisible
和animTopLayoutGone
控制TopLayout布局在滑动到靠近TitleBar
时的显示和隐藏动效animTitleBar
控制TitleBar
布局在TopLayout
靠近时的动效动效可自行实现
xScrollView.setItemOffsetValue
可以设置RecyclerView
预展示部分高度
具体使用可参考demo中的实现方式。