diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomFabBehavior.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomFabBehavior.java index 0eea48297..cabce3ec2 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomFabBehavior.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomFabBehavior.java @@ -28,10 +28,18 @@ public class CustomFabBehavior extends FloatingActionButton.Behavior { @Override public void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull FloatingActionButton child, @NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type, @NonNull int[] consumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, type, consumed); - if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { - onHide(child); - } else if (dyConsumed < 0 && child.getVisibility() == View.INVISIBLE) { - child.show(); + if ("uptop".equals(child.getTag())) { + if (dyConsumed > 0 && child.getVisibility() == View.INVISIBLE) { + child.show(); + } else if (dyConsumed < 0 && child.getVisibility() == View.VISIBLE) { + onHide(child); + } + } else { + if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { + onHide(child); + } else if (dyConsumed < 0 && child.getVisibility() == View.INVISIBLE) { + child.show(); + } } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index 5d45c682e..46633dcfa 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -193,6 +193,10 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac } } + public void scrollToTop() { + mBinding.recycler.smoothScrollToPosition(0); + } + public void setFilter(String key, Value value) { if (value.isActivated()) mExtends.put(key, value.getV()); else mExtends.remove(key); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 1023294ab..0e8c65ac1 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -102,6 +102,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal mBinding.keep.setOnClickListener(this::onKeep); mBinding.retry.setOnClickListener(this::onRetry); mBinding.filter.setOnClickListener(this::onFilter); + mBinding.uptop.setOnClickListener(this::onUptop); mBinding.search.setOnClickListener(this::onSearch); mBinding.history.setOnClickListener(this::onHistory); mBinding.pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @@ -166,12 +167,15 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal if (mAdapter.getItemCount() == 0) { mBinding.filter.setVisibility(View.GONE); mBinding.link.setVisibility(View.VISIBLE); + mBinding.uptop.setVisibility(View.INVISIBLE); } else if (mAdapter.get(position).getFilters().size() > 0) { mBinding.link.setVisibility(View.GONE); mBinding.filter.show(); + mBinding.uptop.setVisibility(View.INVISIBLE); } else if (position == 0 || mAdapter.get(position).getFilters().isEmpty()) { mBinding.link.show(); mBinding.filter.setVisibility(View.GONE); + mBinding.uptop.setVisibility(View.INVISIBLE); } } @@ -179,6 +183,13 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal mBinding.retry.setVisibility(mAdapter.getItemCount() == 0 ? View.VISIBLE : View.GONE); } + private void onUptop(View view) { + ((TypeFragment) getFragment()).scrollToTop(); + mBinding.uptop.setVisibility(View.INVISIBLE); + if (mBinding.filter.getVisibility() == View.INVISIBLE) mBinding.filter.show(); + else if (mBinding.link.getVisibility() == View.INVISIBLE) mBinding.link.show(); + } + private void onLink(View view) { LinkDialog.create(this).show(); } diff --git a/app/src/mobile/res/drawable/ic_fab_uptop.xml b/app/src/mobile/res/drawable/ic_fab_uptop.xml new file mode 100644 index 000000000..a207c79e7 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_fab_uptop.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/mobile/res/layout/fragment_vod.xml b/app/src/mobile/res/layout/fragment_vod.xml index d23b6b826..8af70a698 100644 --- a/app/src/mobile/res/layout/fragment_vod.xml +++ b/app/src/mobile/res/layout/fragment_vod.xml @@ -141,4 +141,18 @@ app:tint="@color/white" tools:visibility="visible" /> + + \ No newline at end of file