lv_followlistview.setOnScrollListener(new AbsListView.OnScrollListener() { private SparseArray recordSp = new SparseArray(0); private int mCurrentfirstVisibleItem = 0; @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && lastItemIndex == followListAdapter.getCount() - 1) { onLoad(); } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { lastItemIndex = firstVisibleItem + visibleItemCount - 1; mCurrentfirstVisibleItem = firstVisibleItem; View firstView = view.getChildAt(0); if (null != firstView) { ItemRecod itemRecord = (ItemRecod) recordSp.get(firstVisibleItem); if (null == itemRecord) { itemRecord = new ItemRecod(); } itemRecord.height = firstView.getHeight(); itemRecord.top = firstView.getTop(); recordSp.append(firstVisibleItem, itemRecord); int temp = h; h = getScrollY(); //滚动距离 if (temp - h > 3) { Log.i(TAG, "temp = \t\t\t1\t" + (h - temp)); image.setVisibility(View.VISIBLE); } else if (temp - h < -3) { Log.i(TAG, "temp = \t\t\t2\t" + (h - temp)); image.setVisibility(View.GONE); } Log.i(TAG, "hhhhhhhhhhhhhhhh = " + h); //在此进行你需要的操作//TODO } } private int getScrollY() { int height = 0; for (int i = 0; i < mCurrentfirstVisibleItem; i++) { ItemRecod itemRecod = (ItemRecod) recordSp.get(i); height += itemRecod.height; } ItemRecod itemRecod = (ItemRecod) recordSp.get(mCurrentfirstVisibleItem); if (null == itemRecod) { itemRecod = new ItemRecod(); } return height - itemRecod.top; } class ItemRecod { int height = 0; int top = 0; } });
listview计算滑动高度 判断上滑下滑 隐藏控件
最新推荐文章于 2018-04-10 21:57:51 发布
本文介绍了一个具体的Android ListView滑动监听实现方案,通过自定义OnScrollListener来处理ListView滚动状态变化及滚动过程中的各种需求,例如加载更多数据、顶部图片的显示隐藏等。文章深入解析了如何使用SparseArray记录每个可见项的高度和位置,以便于精确计算ListView的滚动距离。
3787

被折叠的 条评论
为什么被折叠?



