/*
* Copyright (c) 2016 咖枯 <kaku201313@163.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.jaydenxiao.androidfire.widget;
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.jaydenxiao.androidfire.app.AppConstant;
import com.jaydenxiao.common.baserx.RxBus;
import com.jaydenxiao.common.baserx.RxManager;
public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior {
RxManager rxManager;
public ScrollAwareFABBehavior(Context context, AttributeSet attrs) {
super();
if (rxManager==null){
rxManager=new RxManager();
}
}
@Override
public boolean onStartNestedScroll(final CoordinatorLayout coordinatorLayout, final FloatingActionButton child,
final View directTargetChild, final View target, final int nestedScrollAxes) {
// Ensure we react to vertical scrolling
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);
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
child.hide();
RxBus.getInstance().post(AppConstant.MENU_SHOW_HIDE,false);
} else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) {
RxBus.getInstance().post(AppConstant.MENU_SHOW_HIDE,true);
child.show();
}
}
}