package com.king.tv.view; import android.content.Context; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.FloatingActionButton; import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.view.View; import com.king.base.util.LogUtils; /** * @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a> * @since 2017/3/8 */ public class ScollAwareFABBehavior extends FloatingActionButton.Behavior { private Context context; public ScollAwareFABBehavior(Context context, AttributeSet attrs){ super(); this.context = context; } @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) { return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL ||super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); } @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); LogUtils.d("dy:" + dyConsumed +" -- dyu:" + dyUnconsumed); if(dyConsumed>0 && child.getVisibility() == View.VISIBLE){ // child.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fab_behavior_out)); child.hide(); }else if(dyConsumed<0 && child.getVisibility() != View.VISIBLE){ // child.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fab_behavior_in)); child.show(); } } }