美文网首页高级UI
Xrecyleview打造抖音滑动翻页效果

Xrecyleview打造抖音滑动翻页效果

作者: cc_And | 来源:发表于2019-08-16 13:42 被阅读0次

先放效果图

GIF.gif
/**
 * Xrecyleview抖音滑动效果
 */

public void initUI(XRecyclerView xRecyclerView) {
    // ---RecyclerView---
    xRecyclerView.setNestedScrollingEnabled(false);
    // PagerSnapHelper
    PagerSnapHelper snapHelper = new PagerSnapHelper() {
        // 在 Adapter的 onBindViewHolder 之后执行
        @Override
        public int findTargetSnapPosition(RecyclerView.LayoutManager layoutManager, int velocityX, int velocityY) {
            // TODO 找到对应的Index
            Log.e("xiaxl: ", "---findTargetSnapPosition---");
            int targetPos = super.findTargetSnapPosition(layoutManager, velocityX, velocityY);
            Log.e("xiaxl: ", "targetPos: " + targetPos);
            return targetPos;
        }

        // 在 Adapter的 onBindViewHolder 之后执行
        @Nullable
        @Override
        public View findSnapView(RecyclerView.LayoutManager layoutManager) {
            // TODO 找到对应的View
            Log.e("xiaxl: ", "---findSnapView---");
            View view = super.findSnapView(layoutManager);
            Log.e("xiaxl: ", "tag: " + view.getTag());
            return view;
        }
    };
    snapHelper.attachToRecyclerView(xRecyclerView);
    // ---布局管理器---
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
    // 默认是Vertical (HORIZONTAL则为横向列表)
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    //
    xRecyclerView.setLayoutManager(linearLayoutManager);

    // TODO 这么写是为了获取RecycleView的宽高
    xRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                xRecyclerView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            } else {
                xRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        }
    });
}

使用

XrecycleView recy=findviewbyid(R.id.xrecy);
initUI(recy);

相关文章

网友评论

    本文标题:Xrecyleview打造抖音滑动翻页效果

    本文链接:https://www.haomeiwen.com/subject/stifsctx.html