1
A
回答
0
我认为getScrollY()
可以帮助你:
返回这一观点的滚动顶部位置。这是您视图显示部分的顶部边缘。
见http://developer.android.com/reference/android/view/View.html#getScrollY()
4
见this snippet我写的。它可以计算它滚动的像素有多远,并可以听滚动更改。
/**
* Created by mariotaku on 14/10/22.
*/
public class ListScrollDistanceCalculator implements OnScrollListener {
private ScrollDistanceListener mScrollDistanceListener;
private boolean mListScrollStarted;
private int mFirstVisibleItem;
private int mFirstVisibleHeight;
private int mFirstVisibleTop, mFirstVisibleBottom;
private int mTotalScrollDistance;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (view.getCount() == 0) return;
switch (scrollState) {
case SCROLL_STATE_IDLE: {
mListScrollStarted = false;
break;
}
case SCROLL_STATE_TOUCH_SCROLL: {
final View firstChild = view.getChildAt(0);
mFirstVisibleItem = view.getFirstVisiblePosition();
mFirstVisibleTop = firstChild.getTop();
mFirstVisibleBottom = firstChild.getBottom();
mFirstVisibleHeight = firstChild.getHeight();
mListScrollStarted = true;
mTotalScrollDistance = 0;
break;
}
}
}
public int getTotalScrollDistance() {
return mTotalScrollDistance;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (totalItemCount == 0 || !mListScrollStarted) return;
final View firstChild = view.getChildAt(0);
final int firstVisibleTop = firstChild.getTop(), firstVisibleBottom = firstChild.getBottom();
final int firstVisibleHeight = firstChild.getHeight();
final int delta;
if (firstVisibleItem > mFirstVisibleItem) {
mFirstVisibleTop += mFirstVisibleHeight;
delta = firstVisibleTop - mFirstVisibleTop;
} else if (firstVisibleItem < mFirstVisibleItem) {
mFirstVisibleBottom -= mFirstVisibleHeight;
delta = firstVisibleBottom - mFirstVisibleBottom;
} else {
delta = firstVisibleBottom - mFirstVisibleBottom;
}
mTotalScrollDistance += delta;
if (mScrollDistanceListener != null) {
mScrollDistanceListener.onScrollDistanceChanged(delta, mTotalScrollDistance);
}
mFirstVisibleTop = firstVisibleTop;
mFirstVisibleBottom = firstVisibleBottom;
mFirstVisibleHeight = firstVisibleHeight;
mFirstVisibleItem = firstVisibleItem;
}
public void setScrollDistanceListener(ScrollDistanceListener listener) {
mScrollDistanceListener = listener;
}
public static interface ScrollDistanceListener {
void onScrollDistanceChanged(int delta, int total);
}
}
相关问题
- 1. 检测vh中滚动的距离JQuery
- 2. 与滚动列表视图离子
- 3. 如何检测滚动视图在Android中的方向
- 4. 滚动列表视图纵向和横向相同的图像
- 5. 如何检测列表视图是在android中向上或向下滚动?
- 6. 视差滚动和浏览器滚动距离。
- 7. 检测滚动视图上的图像
- 8. 检测列表视图滚动的顶部
- 9. 如何检测scrollView的滚动方向?
- 10. 滚动距离FigureCanvas
- 11. 检测从顶部jquery滚动的距离
- 12. Android图像视图和滚动视图中的列表视图
- 13. 如何在列表视图中检测上滚动
- 14. 滚动列表视图倍数我的视图检查的
- 15. 检测走的距离
- 16. 使用ScrollMagic来检测滚动方向
- 17. 如何检测用户是否滚动一定距离
- 18. 检测用户何时滚动MKMapView一定距离?
- 19. 滚动视图内的列表视图
- 20. 在浏览器中从当前位置滚动距离后检测滚动
- 21. 制作列表视图滚动垂直方向
- 22. 检测设备移动距离
- 23. Android触摸和滚动列表视图
- 24. 滚动列表视图
- 25. 滚动列表视图
- 26. 滚动列表视图
- 27. 上滚动列表视图
- 28. 列表视图滚动
- 29. 在列表视图滚动
- 30. TableView /滚动视图列表
真的很有帮助谢谢 – hister
我见过的最好的解决方案。谢谢! – armansimonyan13
只能在我的滚动视图上使用,还是可以在任何滚动视图上检测? – Tomi