博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现淘宝和QQ ToolBar透明渐变效果
阅读量:6292 次
发布时间:2019-06-22

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

hot3.png

妈个蛋,网上找了一圈,没一个靠谱的

public class ToolbarAlphaScrollBehavior extends CoordinatorLayout.Behavior
{ public ToolbarAlphaScrollBehavior() { } public ToolbarAlphaScrollBehavior(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean layoutDependsOn(CoordinatorLayout parent, Toolbar child, View dependency) { return dependency instanceof AppBarLayout; } @Override public boolean onInterceptTouchEvent(CoordinatorLayout parent, Toolbar child, MotionEvent ev) { return ev == null || super.onInterceptTouchEvent(parent, child, ev); } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, Toolbar child, View dependency) { if (dependency instanceof AppBarLayout) { float ratio = (float) getCurrentScrollValue(child, dependency) / getTotalScrollRange(child, dependency); float alpha = 1f - Math.min(1f, Math.max(0f, ratio)); int drawableAlpha = (int) (alpha * 255); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { child.getBackground().setAlpha(drawableAlpha); } else if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { ViewGroup toolbarParent = (ViewGroup) child.getParent(); if (toolbarParent.getChildCount() == 2) { int count = toolbarParent.getChildCount(); for (int i = count - 1; i >= 0; i--) { toolbarParent.getChildAt(i).getBackground().setAlpha(drawableAlpha); } } child.getBackground().setAlpha(drawableAlpha); } else { child.getBackground().setAlpha(drawableAlpha); } if (child.getChildCount() != 0) child.getChildAt(0).setAlpha(alpha); } return false; } private int getCurrentScrollValue(Toolbar child, View dependency) { return dependency.getBottom() - child.getTop(); } private float getTotalScrollRange(Toolbar child, View dependency) { return Math.max(dependency.getHeight(), ((AppBarLayout) dependency).getTotalScrollRange()) - child.getTop(); }}
初始化设置toolbar透明度 toolbar.getBackground().setAlpha(0);
onDependentViewChanged 主要在这里判断滑动,设置toolbar及其子项透明度变化

效果图:

 

参考:

http://gold.xitu.io/entry/575d885d2e958a0069e88536

转载于:https://my.oschina.net/sunlimiter/blog/733852

你可能感兴趣的文章
【数据库优化专题】MySQL视图优化(二)
查看>>
【转载】每个程序员都应该学习使用Python或Ruby
查看>>
PHP高级编程之守护进程,实现优雅重启
查看>>
PHP字符编码转换类3
查看>>
rsync同步服务配置手记
查看>>
http缓存知识
查看>>
Go 时间交并集小工具
查看>>
iOS 多线程总结
查看>>
webpack是如何实现前端模块化的
查看>>
TCP的三次握手四次挥手
查看>>
关于redis的几件小事(六)redis的持久化
查看>>
webpack4+babel7+eslint+editorconfig+react-hot-loader 搭建react开发环境
查看>>
Maven 插件
查看>>
初探Angular6.x---进入用户编辑模块
查看>>
计算机基础知识复习
查看>>
【前端词典】实现 Canvas 下雪背景引发的性能思考
查看>>
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>