自定义CoordinatorLayout.Behavior颜色渐变的TitleBar

原文链接:https://www.jianshu.com/p/36391b013a30

1.自定义一个颜色渐变的Behavior
public class ColorGradBehavior extends CoordinatorLayout.Behavior<View> {
    private static final String TAG = "ColorGradBehavior";
    private int PAGE_COLOR_ONE;
    private int PAGE_COLOR_TWO;
    public ColorGradBehavior() {
    }
    public ColorGradBehavior(Context context, AttributeSet attrs) {
        super(context, attrs);
        PAGE_COLOR_ONE = ContextCompat.getColor(context, R.color.transparent);
        PAGE_COLOR_TWO = ContextCompat.getColor(context, R.color.colorAccent);
    }
    //所依赖的联动对象
    @Override
    public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
        return dependency instanceof AppBarLayout;
    }
    @Override
    public boolean onDependentViewChanged(@NonNull CoordinatorLayout parent, @NonNull View child, @NonNull View dependency) {
        float dy = dependency.getHeight()+dependency.getY();
        float y = dy / child.getHeight();
        y = y>1?1:y;
        ArgbEvaluator argbEvaluator = new ArgbEvaluator();//渐变色计算类
        int currentLastColor = (int) (argbEvaluator.evaluate(1-y, PAGE_COLOR_ONE, PAGE_COLOR_TWO));
        child.setBackgroundColor(currentLastColor);
        return true;
    }
}
2.布局文件:一个AppBarLayout包裹一张图片,中间一个滚动控件NestedScrollView,最下面就是一个LinearLayout写的标题栏
布局文件

效果如下:


滚动渐变
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。