Merge pull request #566 from michaelschattgen/feature/fix-fab

Fix hidden FAB when list changes
This commit is contained in:
Alexander Bakker 2020-08-13 19:05:31 +02:00 committed by GitHub
commit 9557b60c93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 12 deletions

View file

@ -18,6 +18,26 @@ public class FabScrollHelper {
public void onScroll(int dx, int dy) {
if (dy > 0 && _fabMenu.getVisibility() == View.VISIBLE && !_isAnimating) {
setVisible(false);
} else if (dy < 0 && _fabMenu.getVisibility() != View.VISIBLE && !_isAnimating) {
setVisible(true);
}
}
public void setVisible(boolean visible) {
if (visible) {
_fabMenu.setVisibility(View.VISIBLE);
_fabMenu.animate()
.translationY(0)
.setInterpolator(new DecelerateInterpolator(2))
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
_isAnimating = false;
super.onAnimationEnd(animation);
}
}).start();
} else {
_isAnimating = true;
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) _fabMenu.getLayoutParams();
int fabBottomMargin = lp.bottomMargin;
@ -32,18 +52,7 @@ public class FabScrollHelper {
super.onAnimationEnd(animation);
}
}).start();
} else if (dy < 0 && _fabMenu.getVisibility() != View.VISIBLE && !_isAnimating) {
_fabMenu.setVisibility(View.VISIBLE);
_fabMenu.animate()
.translationY(0)
.setInterpolator(new DecelerateInterpolator(2))
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
_isAnimating = false;
super.onAnimationEnd(animation);
}
}).start();
}
}
}

View file

@ -743,6 +743,9 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
_fabScrollHelper.onScroll(dx, dy);
}
@Override
public void onListChange() { _fabScrollHelper.setVisible(true); }
@Override
public void onLocked() {
if (_actionMode != null) {

View file

@ -132,6 +132,7 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
}
}
_view.onListChange();
checkPeriodUniformity();
}
@ -150,6 +151,7 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
notifyItemRemoved(position);
}
_view.onListChange();
checkPeriodUniformity();
}
@ -275,6 +277,7 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
Collections.sort(_shownEntries, comparator);
}
_view.onListChange();
notifyDataSetChanged();
}
@ -612,5 +615,6 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
void onPeriodUniformityChanged(boolean uniform, int period);
void onSelect(VaultEntry entry);
void onDeselect(VaultEntry entry);
void onListChange();
}
}

View file

@ -245,6 +245,9 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
}
}
@Override
public void onListChange() { _listener.onListChange(); }
public void setCodeGroupSize(int codeGrouping) {
_adapter.setCodeGroupSize(codeGrouping);
}
@ -348,6 +351,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
void onScroll(int dx, int dy);
void onSelect(VaultEntry entry);
void onDeselect(VaultEntry entry);
void onListChange();
}
private class VerticalSpaceItemDecoration extends RecyclerView.ItemDecoration {