From 98e96f343848c7acbb41555c995822c5d7f5506c Mon Sep 17 00:00:00 2001 From: xiaji Date: Wed, 27 May 2026 20:45:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8E=86=E5=8F=B2=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E8=BF=9B=E5=85=A5=E6=97=B6=E4=B8=8D=E8=87=AA=E5=8A=A8=E6=92=AD?= =?UTF-8?q?=E6=94=BE=EF=BC=8C=E6=BB=9A=E5=8A=A8=E5=AE=9A=E4=BD=8D=E5=88=B0?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E5=89=A7=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/videoapp/tv/PlayerActivity.kt | 30 +++++++++++++++---- .../java/com/videoapp/tv/ui/SearchFragment.kt | 1 + 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/videoapp/tv/PlayerActivity.kt b/app/src/main/java/com/videoapp/tv/PlayerActivity.kt index c945bd1..451f259 100644 --- a/app/src/main/java/com/videoapp/tv/PlayerActivity.kt +++ b/app/src/main/java/com/videoapp/tv/PlayerActivity.kt @@ -7,6 +7,7 @@ import android.view.View import android.webkit.WebView import android.webkit.WebViewClient import android.widget.Button +import android.widget.HorizontalScrollView import android.widget.ImageButton import android.widget.LinearLayout import androidx.appcompat.app.AppCompatActivity @@ -30,6 +31,7 @@ class PlayerActivity : AppCompatActivity() { private lateinit var controlPanel: View private lateinit var sourceList: LinearLayout private lateinit var episodeList: LinearLayout + private lateinit var episodeScroll: HorizontalScrollView private lateinit var loadingIndicator: View private lateinit var errorText: android.widget.TextView private lateinit var btnClose: ImageButton @@ -42,6 +44,7 @@ class PlayerActivity : AppCompatActivity() { private var sources: List = emptyList() private var currentSourceIndex = 0 private var currentEpisode: Episode? = null + private var historyEpisode: String? = null private val hideHandler = Handler(Looper.getMainLooper()) private val hideRunnable = Runnable { hideControls() } @@ -62,6 +65,7 @@ class PlayerActivity : AppCompatActivity() { controlPanel = findViewById(R.id.control_panel) sourceList = findViewById(R.id.source_list) episodeList = findViewById(R.id.episode_list) + episodeScroll = findViewById(R.id.episode_scroll) loadingIndicator = findViewById(R.id.loading_indicator) errorText = findViewById(R.id.error_text) btnClose = findViewById(R.id.btn_close) @@ -70,6 +74,7 @@ class PlayerActivity : AppCompatActivity() { videoTitle = intent.getStringExtra("title") ?: "" videoCategory = intent.getStringExtra("category") coverUrl = intent.getStringExtra("cover_url") + historyEpisode = intent.getStringExtra("history_episode") btnClose.setOnClickListener { finish() } @@ -131,18 +136,19 @@ class PlayerActivity : AppCompatActivity() { if (index !in sources.indices) return currentSourceIndex = index - // Highlight selected source for (i in 0 until sourceList.childCount) { sourceList.getChildAt(i).isSelected = (i == index) } - // Build episode list for this source val source = sources[index] buildEpisodeUI(source.episodes) - // Auto-play first episode - if (source.episodes.isNotEmpty()) { - playEpisode(source.episodes.first()) + if (historyEpisode != null) { + scrollToEpisode(historyEpisode!!) + } else { + if (source.episodes.isNotEmpty()) { + playEpisode(source.episodes.first()) + } } } @@ -168,6 +174,20 @@ class PlayerActivity : AppCompatActivity() { } } + private fun scrollToEpisode(episodeTitle: String) { + episodeScroll.post { + for (i in 0 until episodeList.childCount) { + val child = episodeList.getChildAt(i) as? Button + if (child?.text == episodeTitle) { + val left = child.left - episodeList.paddingStart + episodeScroll.smoothScrollTo(left, 0) + child.isSelected = true + break + } + } + } + } + private fun playEpisode(ep: Episode) { currentEpisode = ep showLoading(true) diff --git a/app/src/main/java/com/videoapp/tv/ui/SearchFragment.kt b/app/src/main/java/com/videoapp/tv/ui/SearchFragment.kt index 97b93f3..a9fa48d 100644 --- a/app/src/main/java/com/videoapp/tv/ui/SearchFragment.kt +++ b/app/src/main/java/com/videoapp/tv/ui/SearchFragment.kt @@ -225,6 +225,7 @@ class SearchFragment : Fragment() { putExtra("title", playHistory.title) putExtra("category", playHistory.category) putExtra("cover_url", playHistory.coverUrl) + putExtra("history_episode", playHistory.episodeName) } startActivity(intent) }