Skip to content

Instantly share code, notes, and snippets.

@mzgreen
mzgreen / PartTwoActivity.java
Created February 28, 2015 08:26
PartTwoActivity class onShow and onHide implementation
private void initRecyclerView() {
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(createItemList());
recyclerView.setAdapter(recyclerAdapter);
recyclerView.setOnScrollListener(new HidingScrollListener(this) {
@Override
public void onMoved(int distance) {
@mzgreen
mzgreen / HidingScrollListener.java
Created February 28, 2015 08:23
HidingScrollListener condition snapping
else { // it's not visible
if ((mToolbarHeight - mToolbarOffset) > SHOW_THRESHOLD) {
setVisible();
} else {
setInvisible();
}
}
@mzgreen
mzgreen / HidingScrollListener.java
Created February 28, 2015 08:22
HidingScrollListener condition snapping
if (mControlsVisible) {
if (mToolbarOffset > HIDE_THRESHOLD) {
setInvisible();
} else {
setVisible();
}
}
@mzgreen
mzgreen / HidingScrollListener.java
Created February 28, 2015 08:18
HidingScrollListener class with snapping
public abstract class HidingScrollListener extends RecyclerView.OnScrollListener {
private static final float HIDE_THRESHOLD = 10;
private static final float SHOW_THRESHOLD = 70;
private int mToolbarOffset = 0;
private boolean mControlsVisible = true;
private int mToolbarHeight;
public HidingScrollListener(Context context) {
@mzgreen
mzgreen / PartTwoActivity.java
Created February 28, 2015 08:16
Implementation of onMove method in PartTwoActivity class
private void initRecyclerView() {
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(createItemList());
recyclerView.setAdapter(recyclerAdapter);
recyclerView.setOnScrollListener(new HidingScrollListener(this) {
@Override
public void onMoved(int distance) {
mToolbarContainer.setTranslationY(-distance);
@mzgreen
mzgreen / HidingScrollListener.java
Created February 28, 2015 08:12
Assuring that mToolbarOffset will get only values from 0 to mToolbarHeight
if((mToolbarOffset <mToolbarHeight && dy>0) || (mToolbarOffset >0 && dy<0)) {
mToolbarOffset += dy;
}
@mzgreen
mzgreen / HidingScrollListener.java
Created February 28, 2015 08:10
HidingScrollListener class without snapping
public abstract class HidingScrollListener extends RecyclerView.OnScrollListener {
private int mToolbarOffset = 0;
private int mToolbarHeight;
public HidingScrollListener(Context context) {
mToolbarHeight = Utils.getToolbarHeight(context);
}
@Override
@mzgreen
mzgreen / ActivityPartTwo.java
Created February 28, 2015 08:07
ActivityPartTwo class
public class PartTwoActivity extends ActionBarActivity {
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppThemeGreen);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_part_two);
@mzgreen
mzgreen / activity_part_two.xml
Created February 28, 2015 08:04
ActivityPartTwo layout file
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<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 / HidingScrollListener.java
Last active August 29, 2015 14:15
HideOnScrollExample - HidingScrollListener fixed onScroll
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int firstVisibleItem = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
//show views if first item is first visible position and views are hidden
if (firstVisibleItem == 0) {
if(!controlsVisible) {
onShow();
controlsVisible = true;