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