问题描述
Coordinatorlayout (协调者布局)与AppBarLayout 实现 topbar的收滑动缩放效果,
RecyclerView 监听滑动停止时 第一个跟最后一个可见的item 上报曝光埋点
(findFirstVisibleItemPosition findLastVisibleItemPosition)
但上报的埋点数据与用户真实见到的item不符,曝光埋点失准。
问题原因
用户的可见视野区域高度(768)
RecyclerView 的计算高度 1104
分析源码AppBarLayout 重新定义了heightMeasureSpec MeasureSpec刻度size 为 1653
界面真实边界是在手机屏幕下方
解决方案
findLastVisibleItemPosition的值 开始 递减循环到 findFirstVisibleItemPosition ,依次重新判断item是否是用户可见的视野区域
viewpager.getY()+item.getY() 小于屏幕高度及认为是用户可见的区域
核新代码: