diff options
Diffstat (limited to 'org.fox.ttrss')
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 |