Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
livekitAndroidXuningTest
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
davidliu
2023-06-12 23:34:28 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2023-06-12 23:34:28 +0900
Commit
cb56a85ef446b3e711007b9b9dce100904c462fa
cb56a85e
1 parent
5b497111
Listen to scroll changes for video sink visibility (#231)
隐藏空白字符变更
内嵌
并排对比
正在显示
1 个修改的文件
包含
14 行增加
和
4 行删除
livekit-android-sdk/src/main/java/io/livekit/android/room/track/video/VideoSinkVisibility.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/video/VideoSinkVisibility.kt
查看文件 @
cb56a85
...
...
@@ -84,10 +84,11 @@ class ViewVisibility(private val view: View) : VideoSinkVisibility() {
private val handler = Handler(Looper.getMainLooper())
private val globalLayoutListener = ViewTreeObserver.OnGlobalLayoutListener {
handler.removeCallbacksAndMessages(null)
handler.postDelayed({
recalculate()
}, 2000)
scheduleRecalculate()
}
private val scrollListener = ViewTreeObserver.OnScrollChangedListener {
scheduleRecalculate()
}
interface Notifier {
...
...
@@ -96,6 +97,7 @@ class ViewVisibility(private val view: View) : VideoSinkVisibility() {
init {
view.viewTreeObserver.addOnGlobalLayoutListener(globalLayoutListener)
view.viewTreeObserver.addOnScrollChangedListener(scrollListener)
if (view is Notifier) {
view.viewVisibility = this
}
...
...
@@ -105,6 +107,13 @@ class ViewVisibility(private val view: View) : VideoSinkVisibility() {
private val viewRect = Rect()
private val windowRect = Rect()
private fun scheduleRecalculate() {
handler.removeCallbacksAndMessages(null)
handler.postDelayed({
recalculate()
}, 2000)
}
fun recalculate() {
var shouldNotify = false
val newVisibility = isVisible()
...
...
@@ -154,6 +163,7 @@ class ViewVisibility(private val view: View) : VideoSinkVisibility() {
override fun close() {
super.close()
handler.removeCallbacksAndMessages(null)
view.viewTreeObserver.removeOnScrollChangedListener(scrollListener)
view.viewTreeObserver.removeOnGlobalLayoutListener(globalLayoutListener)
if (view is Notifier && view.viewVisibility == this) {
view.viewVisibility = null
...
...
请
注册
或
登录
后发表评论