获取指定view 在屏幕中坐标
int[] location = new int[2];
view.getLocationOnScreen(location);
int x=location[0];//获取当前位置的横坐标
int y=location[1];//获取当前位置的纵坐标
竖向滑动:
public int getCurrentViewIndex(LinearLayoutManager linearLayoutManager) {
int firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();
int lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
int currentIndex = firstVisibleItem;
int lastHeight = 0;
for (int i = firstVisibleItem; i <= lastVisibleItem; i++) {
View view = linearLayoutManager.getChildAt(i - firstVisibleItem);
if (null == view) {
continue;
}
int[] location = new int[2];
view.getLocationOnScreen(location);
LogUtil.loge(TAG, "-------------------getLocationOnScreen i :" + (i - firstVisibleItem) + "--location[0]:" + location[0] + "---location[1]:" + location[1]);
Rect localRect = new Rect();
view.getLocalVisibleRect(localRect);
LogUtil.loge(TAG, "------------------getLocalVisibleRect:" + "left:" + localRect.left + "----right:" + localRect.right);
int showHeight = localRect.bottom - localRect.top;
if (showHeight > lastHeight) {
currentIndex = i;
lastHeight = showHeight;
}
}
if (currentIndex < 0) {
currentIndex = 0;
}
return currentIndex;
}
横向滑动:
public int getCurrentViewIndex(LinearLayoutManager linearLayoutManager) {
int firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();
int lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
int currentIndex = firstVisibleItem;
int lastWidth = 0;
for (int i = firstVisibleItem; i <= lastVisibleItem; i++) {
View view = linearLayoutManager.getChildAt(i - firstVisibleItem);
if (null == view) {
continue;
}
int[] location = new int[2];
view.getLocationOnScreen(location);
LogUtil.loge(TAG, "----------location[0]:" + location[0] + "---location[1]:" + location[1]+"--position:"+(i - firstVisibleItem));
Rect localRect = new Rect();
view.getLocalVisibleRect(localRect);
// LogUtil.loge(TAG, "------------------getLocalVisibleRect:" + "left:" + localRect.left + "----right:" + localRect.right + "--i:" + (i - firstVisibleItem));
int showWidth = localRect.right - localRect.left;
if (showWidth > lastWidth) {
currentIndex = i;
lastWidth = showWidth;
}
}
if (currentIndex < 0) {
currentIndex = 0;
}
return currentIndex;
}