From 7d063104dd0207a6901a5b8a068e5d1a0e11a0dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Sch=C3=A4ttgen?= Date: Thu, 13 Aug 2020 13:06:20 +0200 Subject: [PATCH] Fix hidden FAB when list changes --- .../aegis/helpers/FabScrollHelper.java | 33 ++++++++++++------- .../aegis/ui/MainActivity.java | 3 ++ .../aegis/ui/views/EntryAdapter.java | 4 +++ .../aegis/ui/views/EntryListView.java | 4 +++ 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/helpers/FabScrollHelper.java b/app/src/main/java/com/beemdevelopment/aegis/helpers/FabScrollHelper.java index b703ba01..8f646da8 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/helpers/FabScrollHelper.java +++ b/app/src/main/java/com/beemdevelopment/aegis/helpers/FabScrollHelper.java @@ -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(); } + } } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java index 09a7b3cf..62b19306 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -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) { diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java index a1b9239f..6c3e2a66 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java @@ -130,6 +130,7 @@ public class EntryAdapter extends RecyclerView.Adapter implements I } } + _view.onListChange(); checkPeriodUniformity(); } @@ -148,6 +149,7 @@ public class EntryAdapter extends RecyclerView.Adapter implements I notifyItemRemoved(position); } + _view.onListChange(); checkPeriodUniformity(); } @@ -273,6 +275,7 @@ public class EntryAdapter extends RecyclerView.Adapter implements I Collections.sort(_shownEntries, comparator); } + _view.onListChange(); notifyDataSetChanged(); } @@ -560,5 +563,6 @@ public class EntryAdapter extends RecyclerView.Adapter implements I void onPeriodUniformityChanged(boolean uniform, int period); void onSelect(VaultEntry entry); void onDeselect(VaultEntry entry); + void onListChange(); } } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java index 05ac998c..33ac6a88 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java @@ -236,6 +236,9 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { } } + @Override + public void onListChange() { _listener.onListChange(); } + public void setCodeGroupSize(int codeGrouping) { _adapter.setCodeGroupSize(codeGrouping); } @@ -339,6 +342,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 {