forked from recloudstream/cloudstream
player support for small screen + player fixes
This commit is contained in:
parent
dea167a851
commit
b859508522
8 changed files with 489 additions and 401 deletions
|
@ -200,6 +200,8 @@ class TrailersToProvider : MainAPI() {
|
||||||
override fun load(url: String): LoadResponse {
|
override fun load(url: String): LoadResponse {
|
||||||
val response = khttp.get(url)
|
val response = khttp.get(url)
|
||||||
val document = Jsoup.parse(response.text)
|
val document = Jsoup.parse(response.text)
|
||||||
|
var title = document?.selectFirst("h2.breadcrumbs-custom-title > a")?.text() ?: throw ErrorLoadingException("Service might be unavailable")
|
||||||
|
|
||||||
val metaInfo = document.select("div.post-info-meta > ul.post-info-meta-list > li")
|
val metaInfo = document.select("div.post-info-meta > ul.post-info-meta-list > li")
|
||||||
val year = metaInfo?.get(0)?.selectFirst("> span.small-text")?.text()?.takeLast(4)?.toIntOrNull()
|
val year = metaInfo?.get(0)?.selectFirst("> span.small-text")?.text()?.takeLast(4)?.toIntOrNull()
|
||||||
val rating = parseRating(metaInfo?.get(1)?.selectFirst("> span.small-text")?.text()?.replace("/ 10", ""))
|
val rating = parseRating(metaInfo?.get(1)?.selectFirst("> span.small-text")?.text()?.replace("/ 10", ""))
|
||||||
|
@ -208,7 +210,6 @@ class TrailersToProvider : MainAPI() {
|
||||||
val trailer = metaInfo?.get(4)?.selectFirst("> a")?.attr("href")
|
val trailer = metaInfo?.get(4)?.selectFirst("> a")?.attr("href")
|
||||||
val poster = document.selectFirst("div.slider-image > a > img").attr("src")
|
val poster = document.selectFirst("div.slider-image > a > img").attr("src")
|
||||||
val descriptHeader = document.selectFirst("article.post-info")
|
val descriptHeader = document.selectFirst("article.post-info")
|
||||||
var title = document.selectFirst("h2.breadcrumbs-custom-title > a").text()
|
|
||||||
title = title.substring(0, title.length - 6) // REMOVE YEAR
|
title = title.substring(0, title.length - 6) // REMOVE YEAR
|
||||||
|
|
||||||
val descript = descriptHeader.select("> div > p").text()
|
val descript = descriptHeader.select("> div > p").text()
|
||||||
|
|
|
@ -11,6 +11,7 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
|
@ -106,7 +107,7 @@ class HomeFragment : Fragment() {
|
||||||
var currentMainList: ArrayList<SearchResponse> = ArrayList()
|
var currentMainList: ArrayList<SearchResponse> = ArrayList()
|
||||||
|
|
||||||
private fun toggleMainVisibility(visible: Boolean) {
|
private fun toggleMainVisibility(visible: Boolean) {
|
||||||
home_main_holder.visibility = if (visible) View.VISIBLE else View.GONE
|
home_main_holder.isVisible = visible
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
|
@ -314,7 +315,7 @@ class HomeFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
observe(homeViewModel.bookmarks) { bookmarks ->
|
observe(homeViewModel.bookmarks) { bookmarks ->
|
||||||
home_bookmarked_holder.visibility = if (bookmarks.isNotEmpty()) View.VISIBLE else View.GONE
|
home_bookmarked_holder.isVisible = bookmarks.isNotEmpty()
|
||||||
(home_bookmarked_child_recyclerview?.adapter as HomeChildItemAdapter?)?.cardList = bookmarks
|
(home_bookmarked_child_recyclerview?.adapter as HomeChildItemAdapter?)?.cardList = bookmarks
|
||||||
home_bookmarked_child_recyclerview?.adapter?.notifyDataSetChanged()
|
home_bookmarked_child_recyclerview?.adapter?.notifyDataSetChanged()
|
||||||
|
|
||||||
|
@ -329,11 +330,11 @@ class HomeFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
observe(homeViewModel.resumeWatching) { resumeWatching ->
|
observe(homeViewModel.resumeWatching) { resumeWatching ->
|
||||||
home_watch_holder.visibility = if (resumeWatching.isNotEmpty()) View.VISIBLE else View.GONE
|
home_watch_holder?.isVisible = resumeWatching.isNotEmpty()
|
||||||
(home_watch_child_recyclerview?.adapter as HomeChildItemAdapter?)?.cardList = resumeWatching
|
(home_watch_child_recyclerview?.adapter as HomeChildItemAdapter?)?.cardList = resumeWatching
|
||||||
home_watch_child_recyclerview?.adapter?.notifyDataSetChanged()
|
home_watch_child_recyclerview?.adapter?.notifyDataSetChanged()
|
||||||
|
|
||||||
home_watch_child_more_info.setOnClickListener {
|
home_watch_child_more_info?.setOnClickListener {
|
||||||
activity?.loadHomepageList(
|
activity?.loadHomepageList(
|
||||||
HomePageList(
|
HomePageList(
|
||||||
home_watch_parent_item_title?.text?.toString() ?: getString(R.string.continue_watching),
|
home_watch_parent_item_title?.text?.toString() ?: getString(R.string.continue_watching),
|
||||||
|
|
|
@ -21,6 +21,7 @@ import android.view.MotionEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.View.*
|
import android.view.View.*
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
import android.view.animation.AccelerateInterpolator
|
import android.view.animation.AccelerateInterpolator
|
||||||
import android.view.animation.AlphaAnimation
|
import android.view.animation.AlphaAnimation
|
||||||
import android.view.animation.Animation
|
import android.view.animation.Animation
|
||||||
|
@ -30,6 +31,7 @@ import android.widget.Toast.LENGTH_SHORT
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
|
@ -304,11 +306,11 @@ class PlayerFragment : Fragment() {
|
||||||
if (event.rawX >= ctx.width / 2) {
|
if (event.rawX >= ctx.width / 2) {
|
||||||
clicksRight++
|
clicksRight++
|
||||||
if (!ctx.isLocked && ctx.doubleTapEnabled) onDoubleClickRight(clicksRight)
|
if (!ctx.isLocked && ctx.doubleTapEnabled) onDoubleClickRight(clicksRight)
|
||||||
if (!ctx.isShowing) onSingleClick()
|
//if (!ctx.isShowing) onSingleClick()
|
||||||
} else {
|
} else {
|
||||||
clicksLeft++
|
clicksLeft++
|
||||||
if (!ctx.isLocked && ctx.doubleTapEnabled) onDoubleClickLeft(clicksLeft)
|
if (!ctx.isLocked && ctx.doubleTapEnabled) onDoubleClickLeft(clicksLeft)
|
||||||
if (!ctx.isShowing) onSingleClick()
|
//if (!ctx.isShowing) onSingleClick()
|
||||||
}
|
}
|
||||||
} else if (clicksLeft == 0 && clicksRight == 0 && fingerLeftScreen) {
|
} else if (clicksLeft == 0 && clicksRight == 0 && fingerLeftScreen) {
|
||||||
// onSingleClick()
|
// onSingleClick()
|
||||||
|
@ -325,8 +327,8 @@ class PlayerFragment : Fragment() {
|
||||||
onSingleClick()
|
onSingleClick()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//ctx.isShowing &&
|
||||||
if (ctx.isShowing && !ctx.isLocked && ctx.doubleTapEnabled) {
|
if (!ctx.isLocked && ctx.doubleTapEnabled) {
|
||||||
uiScope.launch {
|
uiScope.launch {
|
||||||
delay(doubleClickQualificationSpanInMillis + 1)
|
delay(doubleClickQualificationSpanInMillis + 1)
|
||||||
check()
|
check()
|
||||||
|
@ -346,7 +348,7 @@ class PlayerFragment : Fragment() {
|
||||||
private fun onClickChange() {
|
private fun onClickChange() {
|
||||||
isShowing = !isShowing
|
isShowing = !isShowing
|
||||||
|
|
||||||
click_overlay?.visibility = if (isShowing) GONE else VISIBLE
|
click_overlay?.isVisible = !isShowing
|
||||||
|
|
||||||
val titleMove = if (isShowing) 0f else -50.toPx.toFloat()
|
val titleMove = if (isShowing) 0f else -50.toPx.toFloat()
|
||||||
ObjectAnimator.ofFloat(video_title, "translationY", titleMove).apply {
|
ObjectAnimator.ofFloat(video_title, "translationY", titleMove).apply {
|
||||||
|
@ -382,10 +384,24 @@ class PlayerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isLocked) {
|
if (!isLocked) {
|
||||||
|
player_ffwd_holder?.alpha = 1f
|
||||||
|
player_rew_holder?.alpha = 1f
|
||||||
|
player_pause_holder?.alpha = 1f
|
||||||
|
|
||||||
shadow_overlay?.startAnimation(fadeAnimation)
|
shadow_overlay?.startAnimation(fadeAnimation)
|
||||||
|
player_ffwd_holder?.startAnimation(fadeAnimation)
|
||||||
|
player_rew_holder?.startAnimation(fadeAnimation)
|
||||||
|
player_pause_holder?.startAnimation(fadeAnimation)
|
||||||
|
} else {
|
||||||
|
//player_ffwd_holder?.alpha = 0f
|
||||||
|
//player_ffwd_holder?.alpha = 0f
|
||||||
|
//player_pause_holder?.alpha = 0f
|
||||||
}
|
}
|
||||||
video_holder?.startAnimation(fadeAnimation)
|
|
||||||
player_torrent_info?.visibility = if (isTorrent && isShowing) VISIBLE else GONE
|
bottom_player_bar.startAnimation(fadeAnimation)
|
||||||
|
player_top_holder.startAnimation(fadeAnimation)
|
||||||
|
// video_holder?.startAnimation(fadeAnimation)
|
||||||
|
player_torrent_info?.isVisible = (isTorrent && isShowing)
|
||||||
// player_torrent_info?.startAnimation(fadeAnimation)
|
// player_torrent_info?.startAnimation(fadeAnimation)
|
||||||
//video_lock_holder?.startAnimation(fadeAnimation)
|
//video_lock_holder?.startAnimation(fadeAnimation)
|
||||||
}
|
}
|
||||||
|
@ -614,10 +630,6 @@ class PlayerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun View.setVis(visible: Boolean) {
|
|
||||||
this.visibility = if (visible) VISIBLE else GONE
|
|
||||||
}
|
|
||||||
|
|
||||||
fun changeSkip(position: Long? = null) {
|
fun changeSkip(position: Long? = null) {
|
||||||
val data = localData
|
val data = localData
|
||||||
|
|
||||||
|
@ -639,17 +651,17 @@ class PlayerFragment : Fragment() {
|
||||||
val isAnime =
|
val isAnime =
|
||||||
data.isAnimeBased()//(data is AnimeLoadResponse && (data.type == TvType.Anime || data.type == TvType.ONA))
|
data.isAnimeBased()//(data is AnimeLoadResponse && (data.type == TvType.Anime || data.type == TvType.ONA))
|
||||||
|
|
||||||
skip_op?.setVis(isAnime && !nextEp)
|
skip_op?.isVisible = (isAnime && !nextEp)
|
||||||
skip_episode?.setVis((!isAnime || nextEp) && hasNext)
|
skip_episode?.isVisible = ((!isAnime || nextEp) && hasNext)
|
||||||
} else {
|
} else {
|
||||||
val isAnime = data.isAnimeBased()
|
val isAnime = data.isAnimeBased()
|
||||||
|
|
||||||
if (isAnime) {
|
if (isAnime) {
|
||||||
skip_op?.setVis(true)
|
skip_op?.isVisible = true
|
||||||
skip_episode?.setVis(false)
|
skip_episode?.isVisible = false
|
||||||
} else {
|
} else {
|
||||||
skip_episode?.setVis(data.isEpisodeBased())
|
skip_episode?.isVisible = data.isEpisodeBased()
|
||||||
skip_op?.setVis(false)
|
skip_op?.isVisible = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -690,7 +702,7 @@ class PlayerFragment : Fragment() {
|
||||||
val alphaAnimation = AlphaAnimation(0f, 1f)
|
val alphaAnimation = AlphaAnimation(0f, 1f)
|
||||||
alphaAnimation.duration = 100
|
alphaAnimation.duration = 100
|
||||||
alphaAnimation.fillAfter = true
|
alphaAnimation.fillAfter = true
|
||||||
video_go_back_holder?.visibility = VISIBLE
|
video_go_back_holder_holder?.visibility = VISIBLE
|
||||||
|
|
||||||
overlay_loading_skip_button?.visibility = VISIBLE
|
overlay_loading_skip_button?.visibility = VISIBLE
|
||||||
loading_overlay?.startAnimation(alphaAnimation)
|
loading_overlay?.startAnimation(alphaAnimation)
|
||||||
|
@ -798,6 +810,12 @@ class PlayerFragment : Fragment() {
|
||||||
resize_player.isClickable = isClick
|
resize_player.isClickable = isClick
|
||||||
exo_progress.isEnabled = isClick
|
exo_progress.isEnabled = isClick
|
||||||
player_media_route_button.isEnabled = isClick
|
player_media_route_button.isEnabled = isClick
|
||||||
|
if (isClick) {
|
||||||
|
player_pause_holder.alpha = 1f
|
||||||
|
player_rew_holder.alpha = 1f
|
||||||
|
player_ffwd_holder.alpha = 1f
|
||||||
|
}
|
||||||
|
|
||||||
//video_go_back_holder2.isEnabled = isClick
|
//video_go_back_holder2.isEnabled = isClick
|
||||||
|
|
||||||
// Clickable doesn't seem to work on com.google.android.exoplayer2.ui.DefaultTimeBar
|
// Clickable doesn't seem to work on com.google.android.exoplayer2.ui.DefaultTimeBar
|
||||||
|
@ -973,6 +991,15 @@ class PlayerFragment : Fragment() {
|
||||||
navigationBarHeight = requireContext().getNavigationBarHeight()
|
navigationBarHeight = requireContext().getNavigationBarHeight()
|
||||||
statusBarHeight = requireContext().getStatusBarHeight()
|
statusBarHeight = requireContext().getStatusBarHeight()
|
||||||
|
|
||||||
|
/*player_pause_holder?.setOnClickListener {
|
||||||
|
if (this::exoPlayer.isInitialized) {
|
||||||
|
if (exoPlayer.isPlaying)
|
||||||
|
exoPlayer.pause()
|
||||||
|
else
|
||||||
|
exoPlayer.play()
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
if (activity?.isCastApiAvailable() == true && !isDownloadedFile) {
|
if (activity?.isCastApiAvailable() == true && !isDownloadedFile) {
|
||||||
CastButtonFactory.setUpMediaRouteButton(activity, player_media_route_button)
|
CastButtonFactory.setUpMediaRouteButton(activity, player_media_route_button)
|
||||||
val castContext = CastContext.getSharedInstance(requireContext())
|
val castContext = CastContext.getSharedInstance(requireContext())
|
||||||
|
@ -980,9 +1007,8 @@ class PlayerFragment : Fragment() {
|
||||||
if (castContext.castState != CastState.NO_DEVICES_AVAILABLE) player_media_route_button.visibility = VISIBLE
|
if (castContext.castState != CastState.NO_DEVICES_AVAILABLE) player_media_route_button.visibility = VISIBLE
|
||||||
castContext.addCastStateListener { state ->
|
castContext.addCastStateListener { state ->
|
||||||
if (player_media_route_button != null) {
|
if (player_media_route_button != null) {
|
||||||
if (state == CastState.NO_DEVICES_AVAILABLE) player_media_route_button.visibility = GONE else {
|
player_media_route_button.isVisible = state != CastState.NO_DEVICES_AVAILABLE
|
||||||
if (player_media_route_button.visibility == GONE) player_media_route_button.visibility = VISIBLE
|
|
||||||
}
|
|
||||||
if (state == CastState.CONNECTED) {
|
if (state == CastState.CONNECTED) {
|
||||||
if (!this::exoPlayer.isInitialized) return@addCastStateListener
|
if (!this::exoPlayer.isInitialized) return@addCastStateListener
|
||||||
val links = sortUrls(getUrls() ?: return@addCastStateListener)
|
val links = sortUrls(getUrls() ?: return@addCastStateListener)
|
||||||
|
@ -1071,9 +1097,7 @@ class PlayerFragment : Fragment() {
|
||||||
GONE else VISIBLE
|
GONE else VISIBLE
|
||||||
else VISIBLE
|
else VISIBLE
|
||||||
|
|
||||||
|
player_media_route_button.isVisible = !isDownloadedFile
|
||||||
player_media_route_button.visibility =
|
|
||||||
if (isDownloadedFile) GONE else VISIBLE
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
currentWindow = savedInstanceState.getInt(STATE_RESUME_WINDOW)
|
currentWindow = savedInstanceState.getInt(STATE_RESUME_WINDOW)
|
||||||
playbackPosition = savedInstanceState.getLong(STATE_RESUME_POSITION)
|
playbackPosition = savedInstanceState.getLong(STATE_RESUME_POSITION)
|
||||||
|
@ -1155,6 +1179,8 @@ class PlayerFragment : Fragment() {
|
||||||
exo_rew_text.text = getString(R.string.rew_text_regular_format).format(fastForwardTime)
|
exo_rew_text.text = getString(R.string.rew_text_regular_format).format(fastForwardTime)
|
||||||
exo_ffwd_text.text = getString(R.string.ffw_text_regular_format).format(fastForwardTime)
|
exo_ffwd_text.text = getString(R.string.ffw_text_regular_format).format(fastForwardTime)
|
||||||
fun rewind() {
|
fun rewind() {
|
||||||
|
player_rew_holder.alpha = 1f
|
||||||
|
|
||||||
val rotateLeft = AnimationUtils.loadAnimation(context, R.anim.rotate_left)
|
val rotateLeft = AnimationUtils.loadAnimation(context, R.anim.rotate_left)
|
||||||
exo_rew.startAnimation(rotateLeft)
|
exo_rew.startAnimation(rotateLeft)
|
||||||
|
|
||||||
|
@ -1167,6 +1193,7 @@ class PlayerFragment : Fragment() {
|
||||||
override fun onAnimationEnd(animation: Animation?) {
|
override fun onAnimationEnd(animation: Animation?) {
|
||||||
exo_rew_text.post {
|
exo_rew_text.post {
|
||||||
exo_rew_text.text = getString(R.string.rew_text_regular_format).format(fastForwardTime)
|
exo_rew_text.text = getString(R.string.rew_text_regular_format).format(fastForwardTime)
|
||||||
|
player_rew_holder.alpha = if (isShowing) 1f else 0f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -1180,6 +1207,7 @@ class PlayerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fastForward() {
|
fun fastForward() {
|
||||||
|
player_ffwd_holder.alpha = 1f
|
||||||
val rotateRight = AnimationUtils.loadAnimation(context, R.anim.rotate_right)
|
val rotateRight = AnimationUtils.loadAnimation(context, R.anim.rotate_right)
|
||||||
exo_ffwd.startAnimation(rotateRight)
|
exo_ffwd.startAnimation(rotateRight)
|
||||||
|
|
||||||
|
@ -1192,6 +1220,7 @@ class PlayerFragment : Fragment() {
|
||||||
override fun onAnimationEnd(animation: Animation?) {
|
override fun onAnimationEnd(animation: Animation?) {
|
||||||
exo_ffwd_text.post {
|
exo_ffwd_text.post {
|
||||||
exo_ffwd_text.text = getString(R.string.ffw_text_regular_format).format(fastForwardTime)
|
exo_ffwd_text.text = getString(R.string.ffw_text_regular_format).format(fastForwardTime)
|
||||||
|
player_ffwd_holder.alpha = if (isShowing) 1f else 0f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -1224,7 +1253,10 @@ class PlayerFragment : Fragment() {
|
||||||
fadeAnimation.fillAfter = true
|
fadeAnimation.fillAfter = true
|
||||||
|
|
||||||
// MENUS
|
// MENUS
|
||||||
centerMenu.startAnimation(fadeAnimation)
|
//centerMenu.startAnimation(fadeAnimation)
|
||||||
|
player_pause_holder.startAnimation(fadeAnimation)
|
||||||
|
player_ffwd_holder.startAnimation(fadeAnimation)
|
||||||
|
player_rew_holder.startAnimation(fadeAnimation)
|
||||||
player_media_route_button.startAnimation(fadeAnimation)
|
player_media_route_button.startAnimation(fadeAnimation)
|
||||||
//video_bar.startAnimation(fadeAnimation)
|
//video_bar.startAnimation(fadeAnimation)
|
||||||
|
|
||||||
|
@ -1245,13 +1277,13 @@ class PlayerFragment : Fragment() {
|
||||||
override fun onDoubleClickRight(clicks: Int) {
|
override fun onDoubleClickRight(clicks: Int) {
|
||||||
if (!isLocked) {
|
if (!isLocked) {
|
||||||
fastForward()
|
fastForward()
|
||||||
}
|
} else onSingleClick()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDoubleClickLeft(clicks: Int) {
|
override fun onDoubleClickLeft(clicks: Int) {
|
||||||
if (!isLocked) {
|
if (!isLocked) {
|
||||||
rewind()
|
rewind()
|
||||||
}
|
} else onSingleClick()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSingleClick() {
|
override fun onSingleClick() {
|
||||||
|
@ -1282,7 +1314,7 @@ class PlayerFragment : Fragment() {
|
||||||
activity?.popCurrentPage()
|
activity?.popCurrentPage()
|
||||||
}
|
}
|
||||||
|
|
||||||
playback_speed_btt.visibility = if (playBackSpeedEnabled) VISIBLE else GONE
|
playback_speed_btt.isVisible = playBackSpeedEnabled
|
||||||
playback_speed_btt.setOnClickListener {
|
playback_speed_btt.setOnClickListener {
|
||||||
val speedsText = listOf("0.5x", "0.75x", "1x", "1.25x", "1.5x", "1.75x", "2x")
|
val speedsText = listOf("0.5x", "0.75x", "1x", "1.25x", "1.5x", "1.75x", "2x")
|
||||||
val speedsNumbers = listOf(0.5f, 0.75f, 1f, 1.25f, 1.5f, 1.75f, 2f)
|
val speedsNumbers = listOf(0.5f, 0.75f, 1f, 1.25f, 1.5f, 1.75f, 2f)
|
||||||
|
@ -1565,6 +1597,7 @@ class PlayerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
loading_overlay?.isVisible = false
|
||||||
savePos()
|
savePos()
|
||||||
SubtitlesFragment.applyStyleEvent -= ::onSubStyleChanged
|
SubtitlesFragment.applyStyleEvent -= ::onSubStyleChanged
|
||||||
|
|
||||||
|
@ -1665,8 +1698,8 @@ class PlayerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
// player_torrent_info?.visibility = if(isTorrent) VISIBLE else GONE
|
// player_torrent_info?.visibility = if(isTorrent) VISIBLE else GONE
|
||||||
//
|
//
|
||||||
isShowing = false
|
isShowing = true
|
||||||
player_torrent_info?.visibility = GONE
|
player_torrent_info?.isVisible = false
|
||||||
//player_torrent_info?.alpha = 0f
|
//player_torrent_info?.alpha = 0f
|
||||||
println("LOADED: ${uri} or ${currentUrl}")
|
println("LOADED: ${uri} or ${currentUrl}")
|
||||||
isCurrentlyPlaying = true
|
isCurrentlyPlaying = true
|
||||||
|
@ -1810,7 +1843,7 @@ class PlayerFragment : Fragment() {
|
||||||
override fun onAnimationRepeat(animation: Animation?) {}
|
override fun onAnimationRepeat(animation: Animation?) {}
|
||||||
|
|
||||||
override fun onAnimationEnd(animation: Animation?) {
|
override fun onAnimationEnd(animation: Animation?) {
|
||||||
loading_overlay.post { video_go_back_holder.visibility = GONE; }
|
loading_overlay.post { video_go_back_holder_holder.visibility = GONE; }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
overlay_loading_skip_button.visibility = GONE
|
overlay_loading_skip_button.visibility = GONE
|
||||||
|
@ -1850,6 +1883,8 @@ class PlayerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player_view.performClick()
|
||||||
|
|
||||||
//TODO FIX
|
//TODO FIX
|
||||||
video_title?.text = hName +
|
video_title?.text = hName +
|
||||||
if (isEpisodeBased)
|
if (isEpisodeBased)
|
||||||
|
|
|
@ -224,6 +224,15 @@ class ResultViewModel : ViewModel() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun filterName(name : String?) : String? {
|
||||||
|
if(name == null) return null
|
||||||
|
Regex("[eE]pisode [0-9]*(.*)").find(name)?.groupValues?.get(1)?.let {
|
||||||
|
if(it.isEmpty())
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
|
||||||
fun load(context: Context, url: String, apiName: String) = viewModelScope.launch {
|
fun load(context: Context, url: String, apiName: String) = viewModelScope.launch {
|
||||||
_resultResponse.postValue(Resource.Loading(url))
|
_resultResponse.postValue(Resource.Loading(url))
|
||||||
|
|
||||||
|
@ -269,7 +278,7 @@ class ResultViewModel : ViewModel() {
|
||||||
for ((index, i) in dataList.withIndex()) {
|
for ((index, i) in dataList.withIndex()) {
|
||||||
episodes.add(
|
episodes.add(
|
||||||
context.buildResultEpisode(
|
context.buildResultEpisode(
|
||||||
i.name,
|
filterName(i.name),
|
||||||
i.posterUrl,
|
i.posterUrl,
|
||||||
index + 1, //TODO MAKE ABLE TO NOT HAVE SOME EPISODE
|
index + 1, //TODO MAKE ABLE TO NOT HAVE SOME EPISODE
|
||||||
null, // TODO FIX SEASON
|
null, // TODO FIX SEASON
|
||||||
|
@ -291,7 +300,7 @@ class ResultViewModel : ViewModel() {
|
||||||
for ((index, i) in d.episodes.withIndex()) {
|
for ((index, i) in d.episodes.withIndex()) {
|
||||||
episodes.add(
|
episodes.add(
|
||||||
context.buildResultEpisode(
|
context.buildResultEpisode(
|
||||||
i.name,
|
filterName(i.name),
|
||||||
i.posterUrl,
|
i.posterUrl,
|
||||||
i.episode ?: (index + 1),
|
i.episode ?: (index + 1),
|
||||||
i.season,
|
i.season,
|
||||||
|
|
|
@ -118,6 +118,7 @@ object DataStoreHelper {
|
||||||
|
|
||||||
fun Context.setViewPos(id: Int?, pos: Long, dur: Long) {
|
fun Context.setViewPos(id: Int?, pos: Long, dur: Long) {
|
||||||
if (id == null) return
|
if (id == null) return
|
||||||
|
if(dur < 10_000) return // too short
|
||||||
setKey("$currentAccount/$VIDEO_POS_DUR", id.toString(), PosDur(pos, dur))
|
setKey("$currentAccount/$VIDEO_POS_DUR", id.toString(), PosDur(pos, dur))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.content.Context
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.view.marginLeft
|
import androidx.core.view.marginLeft
|
||||||
import androidx.core.view.marginRight
|
import androidx.core.view.marginRight
|
||||||
import androidx.core.view.marginTop
|
import androidx.core.view.marginTop
|
||||||
|
@ -31,7 +32,7 @@ object SingleSelectionHelper {
|
||||||
val cancelButton = dialog.findViewById<TextView>(R.id.cancel_btt)!!
|
val cancelButton = dialog.findViewById<TextView>(R.id.cancel_btt)!!
|
||||||
val applyHolder = dialog.findViewById<LinearLayout>(R.id.apply_btt_holder)!!
|
val applyHolder = dialog.findViewById<LinearLayout>(R.id.apply_btt_holder)!!
|
||||||
|
|
||||||
applyHolder.visibility = if (realShowApply) View.VISIBLE else View.GONE
|
applyHolder.isVisible = realShowApply
|
||||||
if (!realShowApply) {
|
if (!realShowApply) {
|
||||||
val params = listView.layoutParams as LinearLayout.LayoutParams
|
val params = listView.layoutParams as LinearLayout.LayoutParams
|
||||||
params.setMargins(listView.marginLeft, listView.marginTop, listView.marginRight, 0)
|
params.setMargins(listView.marginLeft, listView.marginTop, listView.marginRight, 0)
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools"
|
android:layout_height="match_parent"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:keepScreenOn="true"
|
android:keepScreenOn="true"
|
||||||
app:backgroundTint="@android:color/black"
|
app:backgroundTint="@android:color/black"
|
||||||
|
@ -71,6 +72,7 @@
|
||||||
</ProgressBar>
|
</ProgressBar>
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
|
android:id="@+id/video_go_back_holder_holder"
|
||||||
android:layout_margin="5dp"
|
android:layout_margin="5dp"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
|
|
@ -109,118 +109,128 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:id="@+id/video_holder"
|
android:id="@+id/video_holder"
|
||||||
>
|
>
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
|
||||||
android:gravity="center"
|
|
||||||
android:layout_marginTop="15dp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:id="@+id/video_title"
|
|
||||||
tools:text="Hello world"
|
|
||||||
>
|
|
||||||
</TextView>
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
|
||||||
android:gravity="center"
|
|
||||||
android:layout_marginTop="0dp"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:id="@+id/video_title_rez"
|
|
||||||
tools:text="1920x1080"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/video_title">
|
|
||||||
</TextView>
|
|
||||||
<!--
|
|
||||||
<LinearLayout
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
|
||||||
android:gravity="end"
|
|
||||||
android:layout_margin="5dp"
|
|
||||||
android:paddingEnd="60dp"
|
|
||||||
android:paddingStart="60dp"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:id="@+id/topMenuRight"
|
|
||||||
>
|
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
|
||||||
android:id="@+id/next_episode_btt"
|
|
||||||
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:layout_width="150dp"
|
|
||||||
android:layout_height="40dp"
|
|
||||||
android:layout_margin="15dp"
|
|
||||||
card_view:cardCornerRadius="2dp"
|
|
||||||
android:foreground="@drawable/outline_card"
|
|
||||||
card_view:cardBackgroundColor="@color/black_overlay"
|
|
||||||
card_view:cardElevation="0dp"
|
|
||||||
>
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:text="@string/next_episode"
|
|
||||||
android:gravity="start|center"
|
|
||||||
android:paddingStart="10dp"
|
|
||||||
android:paddingEnd="10dp"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
>
|
|
||||||
</TextView>
|
|
||||||
<ImageView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:src="@drawable/exo_controls_next"
|
|
||||||
android:layout_gravity="right|center"
|
|
||||||
android:paddingEnd="10dp"
|
|
||||||
android:paddingStart="10dp"
|
|
||||||
tools:ignore="RtlHardcoded">
|
|
||||||
|
|
||||||
</ImageView>
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
</LinearLayout>-->
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.mediarouter.app.MediaRouteButton
|
|
||||||
android:layout_margin="5dp"
|
|
||||||
android:layout_gravity="center_vertical|end"
|
|
||||||
android:id="@+id/player_media_route_button"
|
|
||||||
android:layout_width="70dp"
|
|
||||||
android:layout_height="70dp"
|
|
||||||
android:mediaRouteTypes="user"
|
|
||||||
android:visibility="visible"
|
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
/>
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/video_go_back_holder2"
|
android:id="@+id/player_top_holder"
|
||||||
android:layout_margin="5dp"
|
android:layout_width="match_parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
android:layout_height="match_parent">
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_marginStart="80dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_marginEnd="80dp"
|
||||||
>
|
android:layout_width="match_parent"
|
||||||
<ImageView
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="30dp"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
android:layout_height="30dp"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
android:layout_gravity="center"
|
android:gravity="center"
|
||||||
android:src="@drawable/ic_baseline_arrow_back_24"
|
android:layout_marginTop="35dp"
|
||||||
app:tint="@android:color/white"
|
android:textStyle="bold"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:id="@+id/video_title"
|
||||||
|
tools:text="Hello world"
|
||||||
>
|
>
|
||||||
</ImageView>
|
</TextView>
|
||||||
<ImageView
|
<TextView
|
||||||
android:id="@+id/video_go_back"
|
android:layout_marginStart="80dp"
|
||||||
|
android:layout_marginEnd="80dp"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
android:gravity="center"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:id="@+id/video_title_rez"
|
||||||
|
tools:text="1920x1080"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/video_title">
|
||||||
|
</TextView>
|
||||||
|
<!--
|
||||||
|
<LinearLayout
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
android:gravity="end"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:paddingEnd="60dp"
|
||||||
|
android:paddingStart="60dp"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/topMenuRight"
|
||||||
|
>
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
android:id="@+id/next_episode_btt"
|
||||||
|
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="150dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_margin="15dp"
|
||||||
|
card_view:cardCornerRadius="2dp"
|
||||||
|
android:foreground="@drawable/outline_card"
|
||||||
|
card_view:cardBackgroundColor="@color/black_overlay"
|
||||||
|
card_view:cardElevation="0dp"
|
||||||
|
>
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:text="@string/next_episode"
|
||||||
|
android:gravity="start|center"
|
||||||
|
android:paddingStart="10dp"
|
||||||
|
android:paddingEnd="10dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
>
|
||||||
|
</TextView>
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/exo_controls_next"
|
||||||
|
android:layout_gravity="right|center"
|
||||||
|
android:paddingEnd="10dp"
|
||||||
|
android:paddingStart="10dp"
|
||||||
|
tools:ignore="RtlHardcoded">
|
||||||
|
|
||||||
|
</ImageView>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
</LinearLayout>-->
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.mediarouter.app.MediaRouteButton
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:id="@+id/player_media_route_button"
|
||||||
android:layout_width="70dp"
|
android:layout_width="70dp"
|
||||||
android:layout_height="70dp"
|
android:layout_height="70dp"
|
||||||
android:layout_gravity="center"
|
android:mediaRouteTypes="user"
|
||||||
android:focusable="true"
|
android:visibility="visible"
|
||||||
android:clickable="true"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
android:background="@drawable/video_tap_button_always_white">
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
</ImageView>
|
/>
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/video_go_back_holder2"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
>
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="30dp"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:src="@drawable/ic_baseline_arrow_back_24"
|
||||||
|
app:tint="@android:color/white"
|
||||||
|
>
|
||||||
|
</ImageView>
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/video_go_back"
|
||||||
|
android:layout_width="70dp"
|
||||||
|
android:layout_height="70dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:focusable="true"
|
||||||
|
android:clickable="true"
|
||||||
|
android:background="@drawable/video_tap_button_always_white">
|
||||||
|
</ImageView>
|
||||||
|
</FrameLayout>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
@ -233,9 +243,15 @@
|
||||||
android:id="@+id/centerMenu"
|
android:id="@+id/centerMenu"
|
||||||
>
|
>
|
||||||
|
|
||||||
<FrameLayout android:layout_width="wrap_content"
|
<FrameLayout
|
||||||
android:layout_gravity="center_vertical"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
android:layout_height="wrap_content" tools:ignore="RtlSymmetry">
|
app:layout_constraintRight_toRightOf="@id/player_pause_holder"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
android:id="@+id/player_rew_holder"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical|start"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/exo_rew_text"
|
android:id="@+id/exo_rew_text"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
|
@ -260,38 +276,55 @@
|
||||||
android:src="@drawable/netflix_skip_back"
|
android:src="@drawable/netflix_skip_back"
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:tintMode="src_in"
|
android:tintMode="src_in"
|
||||||
|
|
||||||
/>
|
/>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<!-- style="@style/ExoMediaButton.Play"
|
<!-- style="@style/ExoMediaButton.Play"
|
||||||
android:background="?android:selectableItemBackgroundBorderless"
|
android:background="?android:selectableItemBackgroundBorderless"
|
||||||
-->
|
-->
|
||||||
<ImageButton
|
<FrameLayout
|
||||||
android:id="@id/exo_play"
|
app:layout_constraintLeft_toLeftOf="@id/player_rew_holder"
|
||||||
android:scaleType="fitCenter"
|
app:layout_constraintRight_toRightOf="@id/player_ffwd_holder"
|
||||||
android:layout_height="100dp"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
android:layout_width="100dp"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:background="@drawable/video_tap_button_always_white"
|
android:id="@+id/player_pause_holder"
|
||||||
android:foreground="@drawable/video_play"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true"/>
|
|
||||||
<ImageButton
|
|
||||||
android:id="@id/exo_pause"
|
|
||||||
android:scaleType="fitCenter"
|
|
||||||
android:layout_height="100dp"
|
|
||||||
android:layout_width="100dp"
|
android:layout_width="100dp"
|
||||||
android:layout_gravity="center"
|
android:layout_height="100dp">
|
||||||
android:background="@drawable/video_tap_button_always_white"
|
<ImageButton
|
||||||
android:foreground="@drawable/video_pause"
|
android:id="@id/exo_play"
|
||||||
android:clickable="true"
|
android:scaleType="fitCenter"
|
||||||
android:focusable="true"/>
|
android:layout_height="70dp"
|
||||||
|
android:layout_width="70dp"
|
||||||
|
android:background="@drawable/video_tap_button"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:src="@drawable/netflix_play"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
/>
|
||||||
|
<ImageButton
|
||||||
|
android:id="@id/exo_pause"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:layout_height="70dp"
|
||||||
|
android:layout_width="70dp"
|
||||||
|
android:background="@drawable/video_tap_button"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:src="@drawable/netflix_pause"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
/>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
<FrameLayout android:layout_width="wrap_content"
|
app:layout_constraintLeft_toLeftOf="@id/player_pause_holder"
|
||||||
android:layout_gravity="center_vertical"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
android:layout_height="wrap_content">
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
android:id="@+id/player_ffwd_holder"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical|end"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
<TextView
|
<TextView
|
||||||
tools:text="10"
|
tools:text="10"
|
||||||
android:id="@+id/exo_ffwd_text"
|
android:id="@+id/exo_ffwd_text"
|
||||||
|
@ -315,7 +348,7 @@
|
||||||
android:tintMode="src_in"
|
android:tintMode="src_in"
|
||||||
/>
|
/>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -374,8 +407,6 @@
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:id="@+id/video_bar"
|
android:id="@+id/video_bar"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
tools:text="15:30"
|
tools:text="15:30"
|
||||||
android:layout_marginStart="20dp"
|
android:layout_marginStart="20dp"
|
||||||
|
@ -423,64 +454,18 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<LinearLayout
|
<HorizontalScrollView
|
||||||
android:layout_width="match_parent"
|
android:layout_gravity="center"
|
||||||
android:layout_height="60dp"
|
android:layout_width="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:layout_height="wrap_content">
|
||||||
android:gravity="center"
|
<LinearLayout
|
||||||
android:paddingTop="10dp"
|
android:layout_width="match_parent"
|
||||||
android:paddingBottom="10dp"
|
android:layout_height="60dp"
|
||||||
>
|
android:orientation="horizontal"
|
||||||
<androidx.cardview.widget.CardView
|
android:gravity="center"
|
||||||
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
android:paddingTop="10dp"
|
||||||
android:layout_width="wrap_content"
|
android:paddingBottom="10dp"
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_marginTop="5dp"
|
|
||||||
android:layout_marginBottom="5dp"
|
|
||||||
android:layout_marginStart="20dp"
|
|
||||||
android:layout_marginEnd="20dp"
|
|
||||||
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
|
||||||
card_view:cardBackgroundColor="@color/transparent"
|
|
||||||
android:foreground="?attr/selectableItemBackgroundBorderless"
|
|
||||||
android:id="@+id/lock_player"
|
|
||||||
card_view:cardElevation="0dp"
|
|
||||||
tools:visibility="gone"
|
|
||||||
>
|
>
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:paddingStart="10dp"
|
|
||||||
android:paddingEnd="10dp"
|
|
||||||
>
|
|
||||||
<ImageView
|
|
||||||
android:layout_width="30dp"
|
|
||||||
android:layout_height="30dp"
|
|
||||||
android:id="@+id/video_locked_img"
|
|
||||||
android:src="@drawable/video_locked"
|
|
||||||
app:tint="@android:color/white"
|
|
||||||
android:layout_gravity="center">
|
|
||||||
|
|
||||||
</ImageView>
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:text="@string/lock"
|
|
||||||
android:gravity="center"
|
|
||||||
android:paddingStart="10dp"
|
|
||||||
android:paddingEnd="10dp"
|
|
||||||
android:textSize="10sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:id="@+id/video_locked_text"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
>
|
|
||||||
</TextView>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
<LinearLayout android:id="@+id/lock_holder" android:orientation="horizontal"
|
|
||||||
android:layout_width="wrap_content" android:layout_height="match_parent">
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -492,8 +477,8 @@
|
||||||
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
||||||
card_view:cardBackgroundColor="@color/transparent"
|
card_view:cardBackgroundColor="@color/transparent"
|
||||||
android:foreground="?attr/selectableItemBackgroundBorderless"
|
android:foreground="?attr/selectableItemBackgroundBorderless"
|
||||||
|
android:id="@+id/lock_player"
|
||||||
card_view:cardElevation="0dp"
|
card_view:cardElevation="0dp"
|
||||||
android:id="@+id/resize_player"
|
|
||||||
tools:visibility="gone"
|
tools:visibility="gone"
|
||||||
>
|
>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -504,9 +489,10 @@
|
||||||
android:paddingEnd="10dp"
|
android:paddingEnd="10dp"
|
||||||
>
|
>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="30dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="30dp"
|
||||||
android:src="@drawable/ic_baseline_aspect_ratio_24"
|
android:id="@+id/video_locked_img"
|
||||||
|
android:src="@drawable/video_locked"
|
||||||
app:tint="@android:color/white"
|
app:tint="@android:color/white"
|
||||||
android:layout_gravity="center">
|
android:layout_gravity="center">
|
||||||
|
|
||||||
|
@ -514,221 +500,276 @@
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:text="@string/resize"
|
android:text="@string/lock"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingStart="10dp"
|
android:paddingStart="10dp"
|
||||||
android:paddingEnd="10dp"
|
android:paddingEnd="10dp"
|
||||||
android:textSize="10sp"
|
android:textSize="10sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
android:id="@+id/video_locked_text"
|
||||||
android:textColor="@android:color/white"
|
android:textColor="@android:color/white"
|
||||||
>
|
>
|
||||||
</TextView>
|
</TextView>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
<androidx.cardview.widget.CardView
|
<LinearLayout
|
||||||
|
android:id="@+id/lock_holder"
|
||||||
|
android:orientation="horizontal"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent">
|
||||||
android:layout_marginTop="5dp"
|
<androidx.cardview.widget.CardView
|
||||||
android:layout_marginBottom="5dp"
|
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_marginStart="20dp"
|
|
||||||
android:layout_marginEnd="20dp"
|
|
||||||
app:cardCornerRadius="@dimen/card_corner_radius"
|
|
||||||
app:cardBackgroundColor="@color/transparent"
|
|
||||||
android:foreground="?attr/selectableItemBackgroundBorderless"
|
|
||||||
android:id="@+id/playback_speed_btt"
|
|
||||||
app:cardElevation="0dp"
|
|
||||||
|
|
||||||
>
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="horizontal"
|
android:layout_marginTop="5dp"
|
||||||
android:paddingStart="10dp"
|
android:layout_marginBottom="5dp"
|
||||||
android:paddingEnd="10dp"
|
android:layout_marginStart="20dp"
|
||||||
|
android:layout_marginEnd="20dp"
|
||||||
|
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
||||||
|
card_view:cardBackgroundColor="@color/transparent"
|
||||||
|
android:foreground="?attr/selectableItemBackgroundBorderless"
|
||||||
|
card_view:cardElevation="0dp"
|
||||||
|
android:id="@+id/resize_player"
|
||||||
|
tools:visibility="gone"
|
||||||
>
|
>
|
||||||
<ImageView
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:src="@drawable/ic_baseline_speed_24"
|
android:orientation="horizontal"
|
||||||
app:tint="@android:color/white"
|
android:paddingStart="10dp"
|
||||||
|
android:paddingEnd="10dp"
|
||||||
>
|
>
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:src="@drawable/ic_baseline_aspect_ratio_24"
|
||||||
|
app:tint="@android:color/white"
|
||||||
|
android:layout_gravity="center">
|
||||||
|
|
||||||
</ImageView>
|
</ImageView>
|
||||||
<TextView
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:text="@string/resize"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingStart="10dp"
|
||||||
|
android:paddingEnd="10dp"
|
||||||
|
android:textSize="10sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
>
|
||||||
|
</TextView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:layout_marginStart="20dp"
|
||||||
|
android:layout_marginEnd="20dp"
|
||||||
|
app:cardCornerRadius="@dimen/card_corner_radius"
|
||||||
|
app:cardBackgroundColor="@color/transparent"
|
||||||
|
android:foreground="?attr/selectableItemBackgroundBorderless"
|
||||||
|
android:id="@+id/playback_speed_btt"
|
||||||
|
app:cardElevation="0dp"
|
||||||
|
|
||||||
|
>
|
||||||
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:text="Speed"
|
android:orientation="horizontal"
|
||||||
android:gravity="center"
|
|
||||||
android:paddingStart="10dp"
|
android:paddingStart="10dp"
|
||||||
android:paddingEnd="10dp"
|
android:paddingEnd="10dp"
|
||||||
android:id="@+id/player_speed_text"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
|
|
||||||
android:textSize="10sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
>
|
>
|
||||||
</TextView>
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:src="@drawable/ic_baseline_speed_24"
|
||||||
|
app:tint="@android:color/white"
|
||||||
|
>
|
||||||
|
|
||||||
</LinearLayout>
|
</ImageView>
|
||||||
</androidx.cardview.widget.CardView>
|
<TextView
|
||||||
<androidx.cardview.widget.CardView
|
android:layout_width="wrap_content"
|
||||||
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
android:layout_height="match_parent"
|
||||||
android:layout_width="wrap_content"
|
android:text="Speed"
|
||||||
android:layout_height="match_parent"
|
android:gravity="center"
|
||||||
android:layout_marginTop="5dp"
|
android:paddingStart="10dp"
|
||||||
android:layout_marginBottom="5dp"
|
android:paddingEnd="10dp"
|
||||||
android:layout_marginStart="20dp"
|
android:id="@+id/player_speed_text"
|
||||||
android:layout_marginEnd="20dp"
|
android:layout_gravity="center"
|
||||||
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
|
||||||
card_view:cardBackgroundColor="@color/transparent"
|
|
||||||
android:foreground="?attr/selectableItemBackgroundBorderless"
|
|
||||||
android:id="@+id/sources_btt"
|
|
||||||
card_view:cardElevation="0dp"
|
|
||||||
|
|
||||||
>
|
android:textSize="10sp"
|
||||||
<LinearLayout
|
android:textStyle="bold"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
>
|
||||||
|
</TextView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="horizontal"
|
android:layout_marginTop="5dp"
|
||||||
android:paddingStart="10dp"
|
android:layout_marginBottom="5dp"
|
||||||
android:paddingEnd="10dp"
|
android:layout_marginStart="20dp"
|
||||||
|
android:layout_marginEnd="20dp"
|
||||||
|
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
||||||
|
card_view:cardBackgroundColor="@color/transparent"
|
||||||
|
android:foreground="?attr/selectableItemBackgroundBorderless"
|
||||||
|
android:id="@+id/sources_btt"
|
||||||
|
card_view:cardElevation="0dp"
|
||||||
|
|
||||||
>
|
>
|
||||||
<ImageView
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:src="@drawable/ic_baseline_playlist_play_24"
|
android:orientation="horizontal"
|
||||||
app:tint="@android:color/white"
|
|
||||||
android:layout_gravity="center">
|
|
||||||
|
|
||||||
</ImageView>
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:text="@string/source"
|
|
||||||
android:gravity="center"
|
|
||||||
android:paddingStart="10dp"
|
android:paddingStart="10dp"
|
||||||
|
|
||||||
android:textSize="10sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:paddingEnd="10dp"
|
android:paddingEnd="10dp"
|
||||||
android:layout_gravity="center"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
>
|
>
|
||||||
</TextView>
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:src="@drawable/ic_baseline_playlist_play_24"
|
||||||
|
app:tint="@android:color/white"
|
||||||
|
android:layout_gravity="center">
|
||||||
|
|
||||||
</LinearLayout>
|
</ImageView>
|
||||||
</androidx.cardview.widget.CardView>
|
<TextView
|
||||||
<androidx.cardview.widget.CardView
|
android:layout_width="match_parent"
|
||||||
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
android:layout_height="match_parent"
|
||||||
android:layout_width="wrap_content"
|
android:text="@string/source"
|
||||||
android:layout_height="match_parent"
|
android:gravity="center"
|
||||||
android:layout_marginTop="5dp"
|
android:paddingStart="10dp"
|
||||||
android:layout_marginBottom="5dp"
|
|
||||||
android:layout_marginStart="20dp"
|
|
||||||
android:layout_marginEnd="20dp"
|
|
||||||
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
|
||||||
card_view:cardBackgroundColor="@color/transparent"
|
|
||||||
android:foreground="?attr/selectableItemBackgroundBorderless"
|
|
||||||
card_view:cardElevation="0dp"
|
|
||||||
|
|
||||||
android:id="@+id/skip_op"
|
android:textSize="10sp"
|
||||||
>
|
android:textStyle="bold"
|
||||||
<LinearLayout
|
android:paddingEnd="10dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
>
|
||||||
|
</TextView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="horizontal"
|
android:layout_marginTop="5dp"
|
||||||
android:paddingStart="10dp"
|
android:layout_marginBottom="5dp"
|
||||||
android:paddingEnd="10dp"
|
android:layout_marginStart="20dp"
|
||||||
>
|
android:layout_marginEnd="20dp"
|
||||||
<ImageView
|
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
||||||
android:layout_width="24dp"
|
card_view:cardBackgroundColor="@color/transparent"
|
||||||
android:layout_height="match_parent"
|
android:foreground="?attr/selectableItemBackgroundBorderless"
|
||||||
android:src="@drawable/exo_controls_fastforward"
|
card_view:cardElevation="0dp"
|
||||||
app:tint="@android:color/white"
|
|
||||||
android:layout_gravity="center">
|
|
||||||
</ImageView>
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:text="@string/skip_op"
|
|
||||||
android:gravity="start|center"
|
|
||||||
android:paddingStart="10dp"
|
|
||||||
|
|
||||||
android:textSize="10sp"
|
android:id="@+id/skip_op"
|
||||||
android:textStyle="bold"
|
>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="10dp"
|
||||||
android:paddingEnd="10dp"
|
android:paddingEnd="10dp"
|
||||||
android:layout_gravity="center"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
>
|
>
|
||||||
</TextView>
|
<ImageView
|
||||||
</LinearLayout>
|
android:layout_width="24dp"
|
||||||
</androidx.cardview.widget.CardView>
|
android:layout_height="match_parent"
|
||||||
<androidx.cardview.widget.CardView
|
android:src="@drawable/exo_controls_fastforward"
|
||||||
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
app:tint="@android:color/white"
|
||||||
android:layout_width="wrap_content"
|
android:layout_gravity="center">
|
||||||
android:layout_height="match_parent"
|
</ImageView>
|
||||||
android:layout_marginTop="5dp"
|
<TextView
|
||||||
android:layout_marginBottom="5dp"
|
android:layout_width="match_parent"
|
||||||
android:layout_marginStart="20dp"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginEnd="20dp"
|
android:text="@string/skip_op"
|
||||||
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
android:gravity="start|center"
|
||||||
card_view:cardBackgroundColor="@color/transparent"
|
android:paddingStart="10dp"
|
||||||
android:foreground="?attr/selectableItemBackgroundBorderless"
|
|
||||||
card_view:cardElevation="0dp"
|
android:textSize="10sp"
|
||||||
android:id="@+id/skip_episode"
|
android:textStyle="bold"
|
||||||
>
|
android:paddingEnd="10dp"
|
||||||
<LinearLayout
|
android:layout_gravity="center"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
>
|
||||||
|
</TextView>
|
||||||
|
</LinearLayout>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="horizontal"
|
android:layout_marginTop="5dp"
|
||||||
android:paddingStart="10dp"
|
android:layout_marginBottom="5dp"
|
||||||
android:paddingEnd="10dp"
|
android:layout_marginStart="20dp"
|
||||||
|
android:layout_marginEnd="20dp"
|
||||||
|
card_view:cardCornerRadius="@dimen/card_corner_radius"
|
||||||
|
card_view:cardBackgroundColor="@color/transparent"
|
||||||
|
android:foreground="?attr/selectableItemBackgroundBorderless"
|
||||||
|
card_view:cardElevation="0dp"
|
||||||
|
android:id="@+id/skip_episode"
|
||||||
>
|
>
|
||||||
<ImageView
|
<LinearLayout
|
||||||
android:layout_width="24dp"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:src="@drawable/ic_baseline_skip_next_24"
|
android:orientation="horizontal"
|
||||||
app:tint="@android:color/white"
|
|
||||||
android:layout_gravity="center">
|
|
||||||
</ImageView>
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:text="@string/next_episode"
|
|
||||||
|
|
||||||
android:gravity="start|center"
|
|
||||||
android:paddingStart="10dp"
|
android:paddingStart="10dp"
|
||||||
|
|
||||||
android:textSize="10sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:paddingEnd="10dp"
|
android:paddingEnd="10dp"
|
||||||
android:layout_gravity="center"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
>
|
>
|
||||||
</TextView>
|
<ImageView
|
||||||
</LinearLayout>
|
android:layout_width="24dp"
|
||||||
</androidx.cardview.widget.CardView>
|
android:layout_height="match_parent"
|
||||||
|
android:src="@drawable/ic_baseline_skip_next_24"
|
||||||
|
app:tint="@android:color/white"
|
||||||
|
android:layout_gravity="center">
|
||||||
|
</ImageView>
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:text="@string/next_episode"
|
||||||
|
|
||||||
|
android:gravity="start|center"
|
||||||
|
android:paddingStart="10dp"
|
||||||
|
|
||||||
|
android:textSize="10sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingEnd="10dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
>
|
||||||
|
</TextView>
|
||||||
|
</LinearLayout>
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</HorizontalScrollView>
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
<View android:layout_width="match_parent"
|
<View
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:id="@+id/brightness_overlay"
|
android:layout_width="match_parent"
|
||||||
android:background="@android:color/black"
|
android:layout_height="match_parent"
|
||||||
android:alpha="0"
|
android:id="@+id/brightness_overlay"
|
||||||
|
android:background="@android:color/black"
|
||||||
|
android:alpha="0"
|
||||||
/>
|
/>
|
||||||
<View android:layout_width="match_parent"
|
<View
|
||||||
android:layout_height="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:id="@+id/click_overlay"
|
android:layout_height="match_parent"
|
||||||
android:visibility="gone"
|
android:id="@+id/click_overlay"
|
||||||
android:clickable="true"
|
android:visibility="gone"
|
||||||
android:focusable="true"
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
/>
|
/>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -772,10 +813,7 @@
|
||||||
android:layout_gravity="end|center_vertical"
|
android:layout_gravity="end|center_vertical"
|
||||||
android:progress="100"
|
android:progress="100"
|
||||||
android:progressDrawable="@drawable/progress_drawable_vertical"
|
android:progressDrawable="@drawable/progress_drawable_vertical"
|
||||||
>
|
/>
|
||||||
|
|
||||||
|
|
||||||
</ProgressBar>
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
|
Loading…
Reference in a new issue