/**
* 获取view当前占据屏幕的百分比
*/
private int getVisibilityPercents(View currentView) {
int percents = 100;
Rect rect = new Rect();
//防止出现视频已不在可见得范围之内仍然返回100(完全可见)
boolean isVisible = currentView.getLocalVisibleRect(rect);
if (isVisible) { //可见时做百分比的计算
int height = currentView.getHeight();
if(viewIsPartiallyHiddenTop(rect)){
// view is partially hidden behind the top edge
percents = (height - rect.top) * 100 / height;
} else if(viewIsPartiallyHiddenBottom(rect, height)){
percents = rect.bottom * 100 / height;
}
}else { //View已经不可见
percents = 0;
}
return percents;
}
//view底部部分不可见
private boolean viewIsPartiallyHiddenBottom(Rect rect, int height) {
return rect.bottom > 0 && rect.bottom < height;
}
//view顶部部分不可见
private boolean viewIsPartiallyHiddenTop(Rect rect) {
return rect.top > 0;
}
这里只是对view的top和bottom做了处理,并且没有考虑view的width。如果你在项目中需要处理view的left,right时需要做一定的调整。