场景:首页5个tab,其中3个tab页需要监听滑动(其它的不需要),在主页响应监听回调。同时每个tab 页都还有小部分共通的内容。
step1:首先每个tab 页是一个fragment,使用**BaseFragment **来完成公共部分。
这里需要监听滑动,那么 BaseFragment 中就要有2个抽象方法,方法A是返回布尔值:要不要监听滑动;方法B是对页面滑动的监听;
step2: activity 中需要对监听到的回调做处理。取名 xxDelegate.
这里也需要抽象,使用interface来响应回调。
我们项目的需求是,列表滑动到顶部展示view,内容下滑顶部不可见时隐藏view。
那这里就是2个方法,一个是到顶部回调,一个是非顶部回调。
之所以这里用接口,是因为接口有可复用性。这里实际场景就是,其中一个tab 的fragment的滑动依赖于 child fragment,这时候就可以在child fragment --onAttach和onDetch获取到delegate (通过context强转 ,kotlin 的 as? 函数,问号是防止类型不对强转报错),再执行接口回调.
step3:在activity 中,实现接口。
接口也可以设置空实现,那么不需要监听的tab页,就不用重写接口了。
step4:在BaseFragment view 初始化后,根据 方法A判断要不要监听滑动。如果需要的话,执行方法B。
整个操作就可以执行了 。