summaryrefslogtreecommitdiff
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
parent39d707061fc481ca8163444f224339fe6b2314b1 (diff)
fix headlines fab
-rwxr-xr-xorg.fox.ttrss/build.gradle1
-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
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/fragment_article.xml45
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/fragment_headlines.xml19
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml19
-rw-r--r--org.fox.ttrss/src/main/res/values-night/style.xml2
-rwxr-xr-xorg.fox.ttrss/src/main/res/values/style.xml6
11 files changed, 119 insertions, 67 deletions
diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle
index a211b0d7..5eda4c64 100755
--- a/org.fox.ttrss/build.gradle
+++ b/org.fox.ttrss/build.gradle
@@ -64,7 +64,6 @@ dependencies {
implementation 'com.otaliastudios:nestedscrollcoordinatorlayout:1.0.3'
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.code.gson:gson:2.8.5'
- implementation 'com.shamanland:fab:0.0.8'
implementation 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:1.2.32@aar'
implementation 'me.relex:circleindicator:1.2.2@aar'
implementation 'com.viewpagerindicator:library:2.4.1'
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
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_article.xml b/org.fox.ttrss/src/main/res/layout/fragment_article.xml
index e9fea26c..d14f6d88 100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_article.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_article.xml
@@ -5,7 +5,6 @@
android:layout_height="match_parent"
android:background="?articleBackground">
-
<FrameLayout
android:id="@+id/article_fullscreen_video"
android:visibility="invisible"
@@ -14,14 +13,24 @@
<com.otaliastudios.nestedscrollcoordinatorlayout.NestedScrollCoordinatorLayout
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="wrap_content">
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/article_fab"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="end|bottom"
+ android:layout_marginBottom="72dp"
+ android:layout_marginRight="16dp"
+ android:src="@drawable/ic_action_web_site"
+ />
<com.google.android.material.appbar.AppBarLayout
android:background="?articleHeader"
android:elevation="0dp"
app:elevation="0dp"
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="match_parent">
<LinearLayout
app:layout_scrollFlags="scroll|enterAlways"
@@ -43,7 +52,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="My simple but hilariously and excessively long headline"
android:textColor="?articleHeaderTextColor"
android:textSize="18sp" />
@@ -114,27 +122,26 @@
</LinearLayout>
+ <View
+ android:layout_gravity="top|center_horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:background="?articleHeaderSeparator"/>
+
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/article_scrollview"
android:scrollbars="vertical|horizontal"
- app:layout_behavior="@string/appbar_scrolling_view_behavior"
+ app:layout_behavior=".util.FabAwareScrollingViewBehavior"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:fillViewport="false" >
+ android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
- <View
- android:layout_gravity="top|center_horizontal"
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:background="?articleHeaderSeparator"/>
-
<TextView
android:id="@+id/note"
android:layout_width="match_parent"
@@ -143,7 +150,6 @@
android:background="?articleNoteBackground"
android:textColor="?articleNoteTextColor"
android:textSize="12sp"
- android:text="[Article note]"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingRight="16dp"
@@ -161,17 +167,6 @@
</com.otaliastudios.nestedscrollcoordinatorlayout.NestedScrollCoordinatorLayout>
- <com.shamanland.fab.FloatingActionButton
- android:id="@+id/article_fab"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom|right"
- android:layout_marginRight="16dp"
- android:layout_marginBottom="20dp"
- app:floatingActionButtonColor="?colorAccent"
- android:src="@drawable/ic_action_web_site"
- />
-
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_headlines.xml b/org.fox.ttrss/src/main/res/layout/fragment_headlines.xml
index 177ef32f..647afce8 100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_headlines.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_headlines.xml
@@ -19,15 +19,14 @@
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
- <com.shamanland.fab.FloatingActionButton
- android:id="@+id/headlines_fab"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom|right"
- android:layout_marginRight="16dp"
- android:layout_marginBottom="20dp"
- app:floatingActionButtonColor="?colorAccent"
- android:src="@drawable/ic_refresh"
- />
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/headlines_fab"
+ app:layout_anchor="@id/headlines_fragment"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="end|bottom"
+ android:src="@drawable/ic_refresh"
+ android:layout_marginBottom="72dp"
+ android:layout_marginRight="16dp" />
</FrameLayout> \ No newline at end of file
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml b/org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml
index 56a1137a..170eab8d 100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml
@@ -18,15 +18,14 @@
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
- <com.shamanland.fab.FloatingActionButton
- android:id="@+id/headlines_fab"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom|right"
- android:layout_marginRight="16dp"
- android:layout_marginBottom="20dp"
- app:floatingActionButtonColor="?colorAccent"
- android:src="@drawable/ic_refresh"
- />
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/headlines_fab"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="end|bottom"
+ app:layout_anchorGravity="end|bottom"
+ android:src="@drawable/ic_refresh"
+ android:layout_marginBottom="72dp"
+ android:layout_marginRight="16dp" />
</FrameLayout> \ No newline at end of file
diff --git a/org.fox.ttrss/src/main/res/values-night/style.xml b/org.fox.ttrss/src/main/res/values-night/style.xml
index c81d4b31..e9b143df 100644
--- a/org.fox.ttrss/src/main/res/values-night/style.xml
+++ b/org.fox.ttrss/src/main/res/values-night/style.xml
@@ -29,7 +29,7 @@
<item name="feedlistSelectedTextColor">@android:color/white</item>
<item name="articleHeader">@android:color/transparent</item>
<item name="articleHeaderTextColor">@android:color/white</item>
- <item name="floatingActionButtonStyle">@style/FabTheme</item>
+ <!-- <item name="floatingActionButtonStyle">@style/FabTheme</item> -->
<item name="articleTextColor">#e0e0e0</item>
<item name="headlineFooterColor">?colorPrimary</item>
<item name="articleHeaderSeparator">#303030</item>
diff --git a/org.fox.ttrss/src/main/res/values/style.xml b/org.fox.ttrss/src/main/res/values/style.xml
index 6dbda125..ecc13527 100755
--- a/org.fox.ttrss/src/main/res/values/style.xml
+++ b/org.fox.ttrss/src/main/res/values/style.xml
@@ -36,7 +36,7 @@
<item name="articleHeader">@android:color/transparent</item>
<item name="articleHeaderTextColor">@android:color/black</item>
<item name="articleTextColor">@android:color/black</item>
- <item name="floatingActionButtonStyle">@style/FabTheme</item>
+ <!-- <item name="floatingActionButtonStyle">@style/FabTheme</item> -->
<item name="headlineFooterColor">?colorPrimary</item>
<item name="articleHeaderSeparator">#cccccc</item>
@@ -142,8 +142,8 @@
<style name="DarkDialogTheme" parent="android:Theme"></style>
- <style name="FabTheme" parent="FloatingActionButton">
+ <!-- <style name="FabTheme" parent="FloatingActionButton">
<item name="floatingActionButtonColor">?colorPrimaryDark</item>
- </style>
+ </style> -->
</resources> \ No newline at end of file