如何判断当前View对用户是否可见?

public class ViewUtils {

    private static class InitFactory {
        private static final Rect RECT = new Rect();
    }

    /**
     * 当前View是否对用户可见
     */
    public static boolean isVisibleToUser(View view) {
        // 判断当前View及其父View是否可见
        boolean isShown = view.isShown();
        // 判断当前View所在的Window是否可见
        boolean hasWindowFocus = view.hasWindowFocus();
        boolean isWindowVisible = view.getWindowVisibility() == View.VISIBLE;
        // 是否在屏幕的显示区域内
        boolean globalVisible = view.getGlobalVisibleRect(InitFactory.RECT);
        // 综合判断当前View是否可见
        return isShown && hasWindowFocus && isWindowVisible && globalVisible;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容