Android深入研究之View的可见性检测

一、背景

  在Android开发中,我们常常会对View的可见性visiblity进行操作或者检查。常见的场景有:

  • 在消息流中,根据ImageView是否在屏幕中出现了再决定是否加载;
  • 在视频流页面,当视频滑入屏幕被用户可见时播放,滑出屏幕就自动停止播放等等;
  • 网络请求数据,根据返回的数据结果控制相应View可见或不可见;
  • 需要根据view是否可见或第一次可见,做特殊的处理,如埋点上报等操作。

  在ListView、RecyclerView、ScrollView里可能会遇到比较多的对View的可视性进行操作或检查的场景。
  比如在下面的ScrollView中,根据view自身属性判断view可见性可根据下面四个方法获取:

View5.getVisibility() = View.VISIBLE;
View5.isShown() = true; 
View5.getGlobalVisibleRect() = false;
View5.getLocalVisibleRect() =  false;

image

二、检查View是否可见的基本方法

1.View.getVisibility()

这是常用的也是最基本的检查View可见性的方法,这个方法的返回值有View.VISIBLE(可见)、View.INVISIBLE(不可见但占着原来的空间)和View.GONE( 不可见且不占原来的空间)。如果这个方法返回的是View.INVISIBLE或者View.GONE,那么这个View肯定是对用户不可见的。

2.View.isShown()

  这个方法和View.getVisibility()作用类似,重要的区别就是:

  • getVisibility()返回的是int值,isShown()返回的是boolean值;
  • View.isShown()会对View的所有父类调用getVisibility方法。

3.View.getGlobalVisibleRect()

  这个方法会返回一个View是否可见的boolean值,同时还会将该View的可见区域left,top,right,bottom值保存在一个rect对象中,具体使用方法如下:

Rect globalRect = new Rect();
boolean visibile = view5.getGlobalVisibleRect(globalRect);

getGlobalVisibleRect(Rect r)最后调用的是getGlobalVisibl

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值