博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RecycleView弹性滑动
阅读量:5316 次
发布时间:2019-06-14

本文共 3186 字,大约阅读时间需要 10 分钟。

还有点bug,建议使用 LinearSnapHelper

rvPilotList.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);//                offsetY += dy;////                int first = linearLayoutManager.findFirstCompletelyVisibleItemPosition();//                int last = linearLayoutManager.findLastCompletelyVisibleItemPosition();//                View firstview = linearLayoutManager.findViewByPosition(first);//                if (viewWidth == 0) {//                    viewWidth = firstview.getHeight();//                }//                int offseta = firstview.getTop();//                float sx = 1f + (float) offseta / viewWidth;//                if (offsetY == 0) {//                    View view = linearLayoutManager.findViewByPosition(first + 1);//                    scaleUp(view);//                }////                firstview.setScaleX(sx);//                View lastview = linearLayoutManager.findViewByPosition(last);//                offseta = recyclerView.getHeight() - lastview.getBottom();//                sx = 1f + (float) offseta / viewWidth;//                lastview.setScaleX(sx);            }            @Override            public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {                super.onScrollStateChanged(recyclerView, newState);                if (newState == 0) {                    int visibleItem = linearLayoutManager.getChildCount();                    int coun = 0;                    if (visibleItem % 2 == 1) {                        coun = (visibleItem - 1) / 2;                    } else {                        coun = visibleItem / 2;                    }                    Log.i(TAG, "onScrollStateChanged: " + visibleItem);                    Log.i(TAG, "onScrollStateChanged: coun" + coun);                    int postion = linearLayoutManager.findFirstVisibleItemPosition();                    Log.i(TAG, "onScrollStateChanged: postion" + postion);                    View view;                    Log.i(TAG, "findFirstCompletelyVisibleItemPosition: " + linearLayoutManager.findFirstCompletelyVisibleItemPosition());                    if (postion == 0 && linearLayoutManager.findFirstCompletelyVisibleItemPosition() != 0) {                        view = linearLayoutManager.findViewByPosition(0);                    } else {                        view = linearLayoutManager.findViewByPosition(postion + coun);                    }                    int pm = ((ViewGroup) view.getParent()).getMeasuredWidth();                    int left = view.getLeft() + view.getWidth() / 2;                    int offset = 0;                    if (left == pm / 2) {                        return;                    }                    if (left < pm / 2) {                        offset = -(pm / 2 - left);                    } else {                        offset = left - pm / 2;                    }                    rvPilotList.smoothScrollBy(offset, 0);                }            }        });

  

转载于:https://www.cnblogs.com/6324/p/10733971.html

你可能感兴趣的文章
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>