Skip to content

Instantly share code, notes, and snippets.

@mzgreen
mzgreen / MainActivity.java
Last active August 29, 2015 14:15
HideOnScrollExample - MainActivity hide/show methods
private void hideViews() {
mToolbar.animate().translationY(-mToolbar.getHeight()).setInterpolator(new AccelerateInterpolator(2));
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mFabButton.getLayoutParams();
int fabBottomMargin = lp.bottomMargin;
mFabButton.animate().translationY(mFabButton.getHeight()+fabBottomMargin).setInterpolator(new AccelerateInterpolator(2)).start();
}
private void showViews() {
mToolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2));
@mzgreen
mzgreen / MainActivity.java
Created February 15, 2015 11:21
HideOnScrollExample - MainActivity recycler setup
private void initRecyclerView() {
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(createItemList());
recyclerView.setAdapter(recyclerAdapter);
//setting up our OnScrollListener
recyclerView.setOnScrollListener(new HidingScrollListener() {
@Override
public void onHide() {
hideViews();
@mzgreen
mzgreen / HidingScrollListener.java
Created February 15, 2015 11:20
HideOnScrollExample - HidingScrollListener logic
if (scrolledDistance > HIDE_THRESHOLD && controlsVisible) {
onHide();
controlsVisible = false;
scrolledDistance = 0;
} else if (scrolledDistance < -HIDE_THRESHOLD && !controlsVisible) {
onShow();
controlsVisible = true;
scrolledDistance = 0;
}
@mzgreen
mzgreen / HidingScrollListener.java
Created February 15, 2015 11:19
HideOnScrollExample - HidingScrollListener adding
if((controlsVisible && dy>0) || (!controlsVisible && dy<0)) {
scrolledDistance += dy;
}
@mzgreen
mzgreen / HidingScrollListener.java
Created February 15, 2015 11:18
HideOnScrollExample - HidingScrollListener class
public abstract class HidingScrollListener extends RecyclerView.OnScrollListener {
private static final int HIDE_THRESHOLD = 20;
private int scrolledDistance = 0;
private boolean controlsVisible = true;
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (scrolledDistance > HIDE_THRESHOLD && controlsVisible) {
@mzgreen
mzgreen / RecyclerHeaderViewHolder.java
Created February 15, 2015 11:17
HideOnScrollExample - RecyclerHeaderViewHolder class
public class RecyclerHeaderViewHolder extends RecyclerView.ViewHolder {
public RecyclerHeaderViewHolder(View itemView) {
super(itemView);
}
}
@mzgreen
mzgreen / recycler_header.xml
Created February 15, 2015 11:17
HideOnScrollExample - recycler_header layout
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"/>
@mzgreen
mzgreen / RecyclerAdapter.java
Created February 15, 2015 11:16
HideOnScrollExample - RecyclerAdapter class
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
//added view types
private static final int TYPE_HEADER = 2;
private static final int TYPE_ITEM = 1;
private List<String> mItemList;
public RecyclerAdapter(List<String> itemList) {
mItemList = itemList;
}
@mzgreen
mzgreen / activity_main.xml
Created February 15, 2015 11:15
HideOnScrollExample - activity_main padding
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?attr/actionBarSize"
android:clipToPadding="false"/>
@mzgreen
mzgreen / RecyclerAdapter.java
Created February 15, 2015 11:14
HideOnScrollExample - RecyclerAdapter class
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<String> mItemList;
public RecyclerAdapter(List<String> itemList) {
mItemList = itemList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item, parent, false);