适用于Android的isInViewport

时间:2019-07-12 11:39:54

标签: android kotlin

一旦用户在屏幕上看到某个元素,我想说些什么,类似于WhatsApp蓝色箭头或Messenger阅读箭头。

我发现了this的javascript帮助器,Android(本地,Kotlin或Java)中是否有类似的东西?

var isInViewport = function (elem) {
    var distance = elem.getBoundingClientRect();
    return (
        distance.top >= 0 &&
        distance.left >= 0 &&
        distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
        distance.right <= (window.innerWidth || document.documentElement.clientWidth)
    );
};

var findMe = document.querySelector('#find-me');

window.addEventListener('scroll', function (event) {
    if (isInViewport(findMe)) {
        console.log('In viewport!');
    } else {
    console.log('Nope...');
  }
}, false);

1 个答案:

答案 0 :(得分:0)

我建议您不要在特定于视图的环境中实现此功能。

如果您想实现类似WhatsApp的可见通知者,则可以简单地覆盖onResumeActivity的{​​{1}}方法,然后通知{{1 }},该消息已被看到。

如果要更具体,则另一种方法是,因为您正在聊天屏幕中使用此功能,因此可以使用Fragment的{​​{1}}方法进行通知。

official docs

  

void onBindViewHolder(VH持有人,                   int位置)

     

由RecyclerView调用以在指定位置显示数据。   此方法应更新itemView的内容以反映   项目在给定位置。