getGlobalVisibleRect() 是view可见区域相对与屏幕来说的坐标位置.
getLocalVisibleRect()是view可见区域想对于自己坐标的位置.
一定要记清楚是可见区域.
转载地址 1: https://blog.youkuaiyun.com/zhangyali00/article/details/83650990
public int getCurrentViewIndex() {
int firstVisibleItem = mLineManager.findFirstVisibleItemPosition();
int lastVisibleItem = mLineManager.findLastVisibleItemPosition();
int currentIndex = firstVisibleItem;
int lastHeight = 0;
for (int i = firstVisibleItem; i <= lastVisibleItem; i++) {
View view = mLineManager.getChildAt(i - firstVisibleItem);
if (null == view) {
continue;
}
int[] location = new int[2];
view.getLocationOnScreen(location);
Rect localRect = new Rect();
view.getLocalVisibleRect(localRect);
int showHeight = localRect.bottom - localRect.top;
if (showHeight > lastHeight) {
currentIndex = i;
lastHeight = showHeight;
}
}
if (currentIndex < 0) {
currentIndex = 0;
}
return currentIndex;
}
转载地址 2: https://www.jianshu.com/p/2aa908f6a2e6
getGlobalVisibleRect() 是view可见区域相对与屏幕来说的坐标位置.
getLocalVisibleRect()是view可见区域想对于自己坐标的位置.
一定要记清楚是可见区域.
总结: 地址1 知道了获取当前屏幕内显示的所有view 对象和position 位置,地址2 知道了 可见区域内 view的坐标。
使用getLocalVisibleRect()是view可见区域想对于自己坐标的位置.。 判断可见区域内的 height /width 和view.getHeight()/view.getWidth() 即可判断该view 是否是完全显示在屏幕中。