参考文章五种方式实现Android吸顶效果

我的效果
在这里插入图片描述
吸顶关键点:

  1. 根据滑动距离动态改变tabLayout的父容器
  2. 根据滑动距离动态改变悬浮tab的背景色
  3. 锚点切换关键点参考另一篇文章android锚点优化

关键点代码:

if (y >= headerH) {
    //滑动的距离大于头部布局的高度,切换tabLayout的父布局为scrollview外部的tab容器
    if (frame_dynamic_view.getParent() != ll_out_bar) {
        ll_inside_bar.removeView(frame_dynamic_view);
        ll_out_bar.addView(frame_dynamic_view);
        ll_out_bar.setBackgroundColor(getResources().getColor(R.color.white));
    }
} else {
    //滑动的距离小于头部布局的高度,切换tabLayout的父布局为scrollview内部的tab容器
    if (frame_dynamic_view.getParent() != ll_inside_bar) {
        ll_out_bar.removeView(frame_dynamic_view);
        ll_inside_bar.addView(frame_dynamic_view);
        ll_out_bar.setBackgroundColor(getResources().getColor(android.R.color.transparent));
    }
}
if (isScroll) {
    //关键点2:由scrollView引起的滑动后移动tabLayout高亮显示指定的tab
    if (y +tabH < ll_second.getTop()) {
        setScrollPos(0);
    } else if (y +tabH >= ll_second.getTop() && y + tabH< ll_third.getTop()) {
        setScrollPos(1);
    } else if (y + tabH>= ll_third.getTop()) {
        setScrollPos(2);
    }
}

完整代码

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐