package com.mcxtzhang.coordinatordemo.alipay; import android.content.Context; import android.support.design.widget.CoordinatorLayout; import android.support.v4.view.NestedScrollingChild; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; /** * 介绍: * 作者:zhangxutong * 邮箱:mcxtzhang@163.com * 主页:http://blog.csdn.net/zxt0601 * 时间: 2016/12/22. */ public class CstTopBehavior extends CoordinatorLayout.Behavior<ViewGroup> { ViewGroup beforeView; ViewGroup afterView; public CstTopBehavior() { } public CstTopBehavior(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean layoutDependsOn(CoordinatorLayout parent, ViewGroup child, View dependency) { return child instanceof NestedScrollingChild; } @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, ViewGroup child, View directTargetChild, View target, int nestedScrollAxes) { return true; } @Override public void onNestedScrollAccepted(CoordinatorLayout coordinatorLayout, ViewGroup child, View directTargetChild, View target, int nestedScrollAxes) { super.onNestedScrollAccepted(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); //beforeView = (ViewGroup) child.findViewById(R.id.before); //afterView = (ViewGroup) child.findViewById(R.id.after); } @Override public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, ViewGroup child, View target, int dx, int dy, int[] consumed) { //显示底部 ViewGroup.LayoutParams lp1 = beforeView.getLayoutParams(); ViewGroup.LayoutParams lp2 = afterView.getLayoutParams(); int heightGap = lp1.height - lp2.height; if (dy > 0 && heightGap > 0) { //折叠自己 if (heightGap >= dy) { lp1.height -= dy; beforeView.setLayoutParams(lp1); consumed[1] = dy; } else { lp1.height = lp2.height; afterView.setLayoutParams(lp1); consumed[1] = heightGap; } } else { //显示头部 } super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed); } @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, ViewGroup child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); } @Override public void onStopNestedScroll(CoordinatorLayout coordinatorLayout, ViewGroup child, View target) { super.onStopNestedScroll(coordinatorLayout, child, target); } }