RecycleView弹性滑动
生活随笔
收集整理的這篇文章主要介紹了
RecycleView弹性滑动
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
還有點bug,建議使用?LinearSnapHelper
rvPilotList.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic 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);}@Overridepublic 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
總結
以上是生活随笔為你收集整理的RecycleView弹性滑动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAP理论
- 下一篇: git add * 提示warnin