summaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main/java
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2020-10-02 16:11:14 +0300
committerAndrew Dolgov <[email protected]>2020-10-02 16:11:14 +0300
commitf44e5a67123d47c1637fcc8f7b25537c4fabe8ea (patch)
treea00392a954428bae2aa9832b08f3d919b28099b9 /org.fox.ttrss/src/main/java
parent39d707061fc481ca8163444f224339fe6b2314b1 (diff)
fix headlines fab
Diffstat (limited to 'org.fox.ttrss/src/main/java')
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java22
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java3
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/util/FabAwareScrollingViewBehavior.java61
5 files changed, 77 insertions, 17 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
index cdb424c3..40250046 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
@@ -29,8 +29,6 @@ import android.widget.TextView;
import androidx.core.widget.NestedScrollView;
-import com.shamanland.fab.ShowHideOnScroll;
-
import org.fox.ttrss.types.Article;
import org.fox.ttrss.types.Attachment;
@@ -188,7 +186,7 @@ public class ArticleFragment extends StateSavedFragment {
if (scrollView != null && m_fab != null) {
if (m_prefs.getBoolean("enable_article_fab", true)) {
- scrollView.setOnTouchListener(new ShowHideOnScroll(m_fab));
+ //scrollView.setOnTouchListener(new ShowHideOnScroll(m_fab));
m_fab.setOnClickListener(new OnClickListener() {
@Override
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
index 6d04096b..3365b3f0 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
@@ -68,10 +68,9 @@ import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
import com.bumptech.glide.request.target.Target;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.gson.JsonElement;
-import com.shamanland.fab.FloatingActionButton;
-import com.shamanland.fab.ShowHideOnScroll;
import org.fox.ttrss.glide.ProgressTarget;
import org.fox.ttrss.types.Article;
@@ -126,6 +125,7 @@ public class HeadlinesFragment extends StateSavedFragment {
@State boolean m_compactLayoutMode = false;
private RecyclerView m_list;
private LinearLayoutManager m_layoutManager;
+ private FloatingActionButton m_fab;
private MediaPlayer m_mediaPlayer;
private TextureView m_activeTexture;
@@ -342,7 +342,7 @@ public class HeadlinesFragment extends StateSavedFragment {
m_list.setAdapter(m_adapter);
- FloatingActionButton fab = view.findViewById(R.id.headlines_fab);
+ m_fab = view.findViewById(R.id.headlines_fab);
if (m_prefs.getBoolean("headlines_swipe_to_dismiss", true) && !m_prefs.getBoolean("headlines_mark_read_scroll", false) ) {
@@ -418,17 +418,14 @@ public class HeadlinesFragment extends StateSavedFragment {
}
if (! (getActivity() instanceof DetailActivity)) {
-
- m_list.setOnTouchListener(new ShowHideOnScroll(fab));
- fab.setOnClickListener(new OnClickListener() {
+ m_fab.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
refresh(false);
}
});
-
} else {
- fab.setVisibility(View.GONE);
+ m_fab.hide();
}
/*if (m_activity.isSmallScreen()) {
@@ -476,6 +473,14 @@ public class HeadlinesFragment extends StateSavedFragment {
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
+ if (! (getActivity() instanceof DetailActivity)) {
+ if (dy > 0) {
+ m_fab.hide();
+ } else if (dy < 0) {
+ m_fab.show();
+ }
+ }
+
int firstVisibleItem = m_layoutManager.findFirstVisibleItemPosition();
int lastVisibleItem = m_layoutManager.findLastVisibleItemPosition();
@@ -505,7 +510,6 @@ public class HeadlinesFragment extends StateSavedFragment {
refresh(true);
}
}, 100);
-
}
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
index efeb6b71..f34449f5 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
@@ -31,8 +31,6 @@ import android.widget.TextView;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment;
-import com.shamanland.fab.ShowHideOnScroll;
-
import org.fox.ttrss.R;
import org.fox.ttrss.util.ImageCacheService;
import org.jsoup.Jsoup;
@@ -212,7 +210,7 @@ public class OfflineArticleFragment extends Fragment {
if (scrollView != null && m_fab != null) {
if (m_prefs.getBoolean("enable_article_fab", true)) {
- scrollView.setOnTouchListener(new ShowHideOnScroll(m_fab));
+ //scrollView.setOnTouchListener(new ShowHideOnScroll(m_fab));
m_fab.setOnClickListener(new OnClickListener() {
@Override
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
index d488a42b..aab2d5db 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
@@ -57,7 +57,6 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
-import com.shamanland.fab.FloatingActionButton;
import org.fox.ttrss.Application;
import org.fox.ttrss.CommonActivity;
@@ -356,7 +355,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
m_list = view.findViewById(R.id.headlines_list);
- FloatingActionButton fab = view.findViewById(R.id.headlines_fab);
+ View fab = view.findViewById(R.id.headlines_fab);
fab.setVisibility(View.GONE);
if (m_activity.isSmallScreen()) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/FabAwareScrollingViewBehavior.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/FabAwareScrollingViewBehavior.java
new file mode 100644
index 00000000..0868e6ea
--- /dev/null
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/FabAwareScrollingViewBehavior.java
@@ -0,0 +1,61 @@
+package org.fox.ttrss.util;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.core.view.ViewCompat;
+
+import com.google.android.material.appbar.AppBarLayout;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
+import java.util.List;
+
+public class FabAwareScrollingViewBehavior extends AppBarLayout.ScrollingViewBehavior {
+
+ public FabAwareScrollingViewBehavior(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
+ return super.layoutDependsOn(parent, child, dependency) ||
+ dependency instanceof FloatingActionButton;
+ }
+
+ @Override
+ public boolean onStartNestedScroll(@NonNull CoordinatorLayout coordinatorLayout,
+ @NonNull View child, @NonNull View directTargetChild,
+ @NonNull View target, int axes, int type) {
+ // Ensure we react to vertical scrolling
+ return axes == ViewCompat.SCROLL_AXIS_VERTICAL ||
+ super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, axes, type);
+ }
+
+ @Override
+ public void onNestedPreScroll(@NonNull CoordinatorLayout coordinatorLayout,
+ @NonNull View child, @NonNull View target, int dx, int dy,
+ @NonNull int[] consumed, int type) {
+ super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type);
+
+ if (dy > 0) {
+ // User scrolled down -> hide the FAB
+ List<View> dependencies = coordinatorLayout.getDependencies(child);
+ for (View view : dependencies) {
+ if (view instanceof FloatingActionButton) {
+ ((FloatingActionButton) view).hide();
+ }
+ }
+ } else if (dy < 0) {
+ // User scrolled up -> show the FAB
+ List<View> dependencies = coordinatorLayout.getDependencies(child);
+ for (View view : dependencies) {
+ if (view instanceof FloatingActionButton) {
+ ((FloatingActionButton) view).show();
+ }
+ }
+ }
+ }
+} \ No newline at end of file