博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用aosv库实现各种滚动与组件的互动
阅读量:3778 次
发布时间:2019-05-22

本文共 957 字,大约阅读时间需要 3 分钟。

在几个月之前,看到网易云音乐的这个效果觉得特别震撼,当时思前想后也没想出来这是怎么办到的,直到过了一段时间我发现了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地址:
我的demo地址:

你可能感兴趣的文章
PHP提权姿势
查看>>
Linux VI VIM编辑器
查看>>
Linux 进程管理
查看>>
Vulmap的使用
查看>>
SPSS Modeler工具笔记
查看>>
逻辑题分享
查看>>
后端开发中常用的语言
查看>>
数学考试(牛客)
查看>>
Codeforces Round #697 (Div. 3)
查看>>
Codeforces Round #705 (Div. 2)
查看>>
2021-04-11
查看>>
迷宫(BFS)
查看>>
1816. 连通(BFS+DFS+并查集)
查看>>
2021省赛总结
查看>>
Codeforces Round #719 (Div. 3)
查看>>
3. Mybatis说明typeAliases
查看>>
4. Mybatis结果集映射ResultMap
查看>>
8. Mybatis动态SQL
查看>>
1. 我的第一个Spring程序
查看>>
2. Spring定义继承parent
查看>>