这种垂直滑动大于一屏的数据通常使用RecyclerView或者ScrollView,NestScrollview等控件实现
1、使用RecyclerView实现回到顶部
private int mDy=0;
pricate int mHeight=ScreenUtils.getScreenHeight();
binding.recyclerviewData.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); mDy += dy; if (mDy <= mHeight) { binding.imageBackTop.setVisibility(View.GONE); } else { binding.imageBackTop.setVisibility(View.VISIBLE); } } });
2、使用NestScrollview 实现
pricate int mHeight=ScreenUtils.getScreenHeight();
binding.scrollview.setScrollViewListener((scrollView, x, y, oldx, oldy) -> { if (y <= mHeight) { binding.imageBackTop.setVisibility(View.GONE); } else { binding.imageBackTop.setVisibility(View.VISIBLE); } });
对于一些要求顶部标题有透明渐变效果的需求,也可以在上诉两个监听中实现。
顶部样式
顶部透明变化的样式,可以根据滑动的高度计算透明度进行设置