mobile scroll to top

pull/207/head
okjack 2 years ago
parent bc29c79c9c
commit 73931662aa
  1. 16
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomFabBehavior.java
  2. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java
  3. 11
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  4. 10
      app/src/mobile/res/drawable/ic_fab_uptop.xml
  5. 14
      app/src/mobile/res/layout/fragment_vod.xml

@ -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();
}
}
}

@ -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);

@ -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();
}

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M4,12l1.41,1.41L11,7.83V20h2V7.83l5.58,5.59L20,12l-8,-8 -8,8z" />
</vector>

@ -141,4 +141,18 @@
app:tint="@color/white"
tools:visibility="visible" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/uptop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:tag="uptop"
app:backgroundTint="@color/blue_500"
app:layout_anchor="@id/pager"
app:layout_anchorGravity="end|bottom"
app:layout_behavior="com.fongmi.android.tv.ui.custom.CustomFabBehavior"
app:srcCompat="@drawable/ic_fab_uptop"
app:tint="@color/white"
tools:visibility="visible" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Loading…
Cancel
Save