美文网首页高级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