demo地址
注意:打开首页,选择第三个button进入即可,不用管第一个第二个
效果图
开发前准备和具体实现
- 万能适配器BRVAH,这里利用了BaseMultiItemQuickAdapter实现在RV上加载不同的布局
- 万能指示器MagicIndicator,联动主要是利用了MagicIndicator和RV的方法(也可以使用其他指示器实现),指示器的功能确实很强大,有需要的同学可以研究一下其源码,下附地址MagicIndicator
- CoordinatorLayout(协调者布局)实现头部抽屉效果,这个布局可以实现很多动画效果,网上类似讲解很多
核心代码
mRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
var firstPosition = mLayoutManager.findFirstVisibleItemPosition()
//var lastPosition = mLayoutManager.findLastVisibleItemPosition()
mChannelHelper.handlePageSelected(firstPosition, false)
}
})
override fun setOnTextChange(index: Int) {
mChannelHelper.handlePageSelected(index)
var layoutManager = mLayoutManager as LinearLayoutManager
layoutManager.scrollToPositionWithOffset(index, 0)
}