package com.gc.materialdesign.views;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
import com.gc.materialdesign.views.ButtonFloat;
import com.nineoldandroids.view.ViewPropertyAnimator;
/**
* Created by hamedpc on 4/25/2015.
* This widget uses NineOldAndroid to animate the view so you're gonna need to include it in your project
*/
public class AutoHideButtonFloat extends ButtonFloat implements AbsListView.OnScrollListener {
ListView listView;
private boolean floatHiding = false, floatShowing = false;
private int mLastFirstVisibleItem;
private View view = this;
private AbsListView.OnScrollListener onScrollListener;
public AutoHideButtonFloat(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setOnScrollListener(AbsListView.OnScrollListener onScrollListener) {
this.onScrollListener = onScrollListener;
}
public void setListView(ListView listView) {
this.listView = listView;
this.listView.setOnScrollListener(this);
}
@Override
public void onScrollStateChanged(AbsListView absListView, int scrollState) {
switch (scrollState) {
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
floatHiding = false;
floatShowing = false;
ViewPropertyAnimator.animate(view).translationY(0).setDuration(300);
break;
}
if (onScrollListener != null)
onScrollListener.onScrollStateChanged(absListView, scrollState);
}
@Override
public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (mLastFirstVisibleItem < firstVisibleItem) {
if (floatShowing) floatShowing = false;
if (!floatHiding) {
ViewPropertyAnimator.animate(view).translationY(500).setDuration(300);
floatHiding = true;
}
}
if (mLastFirstVisibleItem > firstVisibleItem) {
if (floatHiding) {
floatHiding = false;
}
if (!floatShowing) {
ViewPropertyAnimator.animate(view).translationY(0).setDuration(300);
floatShowing = true;
}
}
mLastFirstVisibleItem = firstVisibleItem;
if (onScrollListener != null)
onScrollListener.onScroll(absListView, firstVisibleItem, visibleItemCount, totalItemCount);
}
}