导航栏随滑动透明变化及悬浮重点讲述

效果显示:

随着滑动设置顶部标题栏透明,主要是在滑动监听里面做操作:

 mScrollView.setListener(new CompatibleScrollView.ScrollViewListener() {
            @Override
            public void onScrollChanged(View v, int x, int y, int oldx, int oldy) {
                if (y < 10) {
                    mActionBarView.setWhileTheme(R.mipmap.ico_love_white);
                    mTabLayoutView2.setVisibility(View.GONE);
                } else {
                    float percent = y * 1f / (mBgImgView.getMeasuredHeight()-mActionBarView.getMeasuredHeight());
                    int alpha = (int) (255 * (percent > 1 ? 1f : percent));
                    int color = Color.argb(alpha, 255, 255, 255);
                    mActionBarView.setBlackTheme(R.mipmap.ico_love_black, color);
                    //是否显示tab置顶
                    mTabLayoutView2.setVisibility(alpha == 255 ? View.VISIBLE : View.GONE);
                }

            }

            @Override
            public void onScrollBottom(View v) {
                LogUtils.e("滑动到底部");
            }
        });

色值的计算:

float percent = y * 1f / (mBgImgView.getMeasuredHeight() - mActionBarView.getMeasuredHeight());
int alpha = (int) (255 * (percent > 1 ? 1f : percent));
int color = Color.argb(alpha, 255, 255, 255);

​​​​​​​mBgImgView是大图控件,mActionBarView是标题栏,这里的效果是大图滑到标题栏底部就不需要透明,所以范围只就需要
​​​​​​​
mBgImgView.getMeasuredHeight() - mActionBarView.getMeasuredHeight()之后才能开始计算percent  

因为透明度分为256阶(0-255),所以得到百分比之后需要乘255,之后才是真正的透明度值,上面color就是加上透明度的白色色值

至于上面悬浮,其实是有两条mTabLayoutView

mTabLayoutView1一直存在,mTabLayoutView2只是不透明的时候才显示处理,这里只是用了障眼法

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值