利用aosv库实现各种滚动与组件的互动

在几个月之前,看到网易云音乐的这个效果觉得特别震撼,当时思前想后也没想出来这是怎么办到的,直到过了一段时间我发现了aosv这个库,看到其demo有非常多这样的实现,便记下这个库,一时间也没有去研究实现机制。
最近正好想要试一下这个效果,就去看了下代码细节,其实非常简单。
这里写图片描述
这个效果中,最重要的一点就是,toolbar、header的透明度状态,是与listview的滚动相关的。
而这最重要的一点,被aosv这个库实现了。
aosv这个库全名Android-ObservableScrollView,他重新封装了一系列view。(比如listView,gridview,webview,scrollview..)
重新封装过的view可以对自身的滚动状态调用不同的回调方法,所以我们只要在view的onScrollChanged中修改对应的组件状态就ok。
在网易云音乐这个例子中,是在listView中添加了一个header,我们只要根据listView的滚动状态更改toolbar与header的状态就可以实现这样的效果。

@Override
public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) {
int baseColor = getResources().getColor(R.color.colorPrimary);
float alpha = Math.min(1, (float) scrollY / headerHeight);
toolbar.setBackgroundColor(ScrollUtils.getColorWithAlpha(alpha, baseColor));
header.setAlpha(1 - alpha);
//56dp * 640/160 ,上滚动距离超过toolbar高度则切换title显示
if(scrollY > 56*4){
toolbar.setTitle("CSDN");
}else{
toolbar.setTitle("Android");
}
}

效果如下:
这里写图片描述

非常简单,效果也很酷炫。
aosv github地址:https://github.com/ksoichiro/Android-ObservableScrollView
我的demo地址:https://github.com/YuanWenHai/ParallaxListView

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值