From ced178513bf6da675475abb2c951dc0d45f31022 Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Tue, 7 Feb 2023 17:01:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=87=E6=BB=91=E5=8B=95=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E6=92=AD=E6=94=BE/=E6=9A=AB=E5=81=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ray650128/gstreamer_demo_app/Constants.kt | 5 +++ .../ui/mainScreen/MainActivity.kt | 33 +++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/ray650128/gstreamer_demo_app/Constants.kt diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/Constants.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/Constants.kt new file mode 100644 index 0000000..310ef47 --- /dev/null +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/Constants.kt @@ -0,0 +1,5 @@ +package com.ray650128.gstreamer_demo_app + +object Constants { + const val CONF_DELAY_BASE_MILLIS = 300L +} \ No newline at end of file diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/MainActivity.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/MainActivity.kt index d5c7128..58f46b2 100644 --- a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/MainActivity.kt +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/MainActivity.kt @@ -8,6 +8,7 @@ import android.view.WindowManager import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.viewpager2.widget.ViewPager2 +import com.ray650128.gstreamer_demo_app.Constants import com.ray650128.gstreamer_demo_app.R import com.ray650128.gstreamer_demo_app.databinding.ActivityMainBinding import com.ray650128.gstreamer_demo_app.model.Device @@ -55,6 +56,34 @@ class MainActivity : AppCompatActivity() { offscreenPageLimit = 1 setPageTransformer(null) registerOnPageChangeCallback(object: ViewPager2.OnPageChangeCallback() { + private var oldPage = 0 + override fun onPageScrollStateChanged(state: Int) { + super.onPageScrollStateChanged(state) + if (state == ViewPager2.SCROLL_STATE_DRAGGING) { + oldPage = currentPage + splitVideoViewAdapter.stop(currentPage) + } + if (state == ViewPager2.SCROLL_STATE_IDLE && currentPage == oldPage) { + splitVideoViewAdapter.play(currentPage) + } + Log.d("Split", "onPageScrollStateChanged: ${ + when(state) { + ViewPager2.SCROLL_STATE_IDLE -> "SCROLL_STATE_IDLE" + ViewPager2.SCROLL_STATE_DRAGGING -> "SCROLL_STATE_DRAGGING" + ViewPager2.SCROLL_STATE_SETTLING -> "SCROLL_STATE_SETTLING" + else -> "" + } + }") + Log.d("Split", "oldPage: $oldPage, currentPage: $currentPage") + } + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + super.onPageScrolled(position, positionOffset, positionOffsetPixels) + Log.d("Split", "onPageScrolled: $currentPage") + } override fun onPageSelected(position: Int) { super.onPageSelected(position) currentPage = position @@ -102,7 +131,7 @@ class MainActivity : AppCompatActivity() { for (i in 0 until splitVideoViewAdapter.itemCount) { splitVideoViewAdapter.stop(i) } - delay(oldSplitMode * 500L) + delay(oldSplitMode * Constants.CONF_DELAY_BASE_MILLIS) oldSplitMode = splitMode splitVideoViewAdapter.clear() // 如果群組內沒有裝置,則顯示底圖 @@ -119,7 +148,7 @@ class MainActivity : AppCompatActivity() { splitVideoViewAdapter.add(i, splitFragment) } currentPage = 0 - binding.viewPager.currentItem = 0 + //binding.viewPager.currentItem = 0 } }