高仿腾讯微视首页点击直播tab视频沉浸顶部和tab选项卡,点其他界面恢复正常

高仿腾讯微视首页点击直播tab视频沉浸顶部和tab选项卡,点其他界面恢复正常_第1张图片
image.png
高仿腾讯微视首页点击直播tab视频沉浸顶部和tab选项卡,点其他界面恢复正常_第2张图片
image.png

难点1:
让视频view延伸到底部tab,顶部状态栏
难点2:
让其他fragment view顶部状态栏自动fitWindow针对性的让部分延伸到顶部

解决方法:
我使用相对布局,然后让fragment space区域ABOVE 底部区域 然后取消activity的view的fitWindow属性。然后每一个fragment单独计算fitWindow的高度,也就是测量状态栏高度,给自己的不需要填充状态栏的fragment view设置一个状态栏高度view弄进去产生视觉错感。
在切换到直播fragment的时候移除ABOVE自动填充底部,修改底部导航背景为透明,

    private void switchPosition(int index) {

        if (index == mLastPosition) {
            return;
        }

        //view_bottom_wrap
        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) binding.fragmentSpace.getLayoutParams();
        if (index != 3) {
            binding.fragmentSpace.setVisibility(View.VISIBLE);
            binding.line1.setBackgroundColor(Color.WHITE);
            layoutParams.addRule(RelativeLayout.ABOVE, R.id.view_bottom_wrap);
            binding.fragmentSpace.setLayoutParams(layoutParams);
        } else {
            binding.line1.setBackgroundColor(Color.TRANSPARENT);
            binding.fragmentSpace.setVisibility(View.GONE);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                layoutParams.removeRule(RelativeLayout.ABOVE);
                binding.fragmentSpace.setLayoutParams(layoutParams);

            } else {
                layoutParams.addRule(RelativeLayout.ABOVE, 0);
                binding.fragmentSpace.setLayoutParams(layoutParams);
            }


        }

        FragmentUtil.replaceFragment(this, arrayList.get(index), false);
        mLastPosition = index;
    }

布局文件




    

    

    


        


        


            

            

                

                

                


                

                

            



        
    


你可能感兴趣的:(高仿腾讯微视首页点击直播tab视频沉浸顶部和tab选项卡,点其他界面恢复正常)