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 发布