UI fix and android TV fix

This commit is contained in:
LagradOst 2021-11-27 19:49:51 +01:00
parent fd7c337109
commit 6c42fbbacb
28 changed files with 187 additions and 332 deletions

View file

@ -169,6 +169,9 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
} }
} }
if(keyEventListener?.invoke(event) == true) {
return true
}
return super.dispatchKeyEvent(event) return super.dispatchKeyEvent(event)
} }
@ -257,6 +260,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
val onDialogDismissedEvent = Event<Int>() val onDialogDismissedEvent = Event<Int>()
var playerEventListener: ((PlayerEventType) -> Unit)? = null var playerEventListener: ((PlayerEventType) -> Unit)? = null
var keyEventListener: ((KeyEvent?) -> Boolean)? = null
var currentToast: Toast? = null var currentToast: Toast? = null
@ -411,7 +416,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this) val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
val currentTheme = when (settingsManager.getString(getString(R.string.app_theme_key), "Black")) { val currentTheme = when (settingsManager.getString(getString(R.string.app_theme_key), "AmoledLight")) {
"Black" -> R.style.AppTheme "Black" -> R.style.AppTheme
"Light" -> R.style.LightMode "Light" -> R.style.LightMode
"Amoled" -> R.style.AmoledMode "Amoled" -> R.style.AmoledMode

View file

@ -143,9 +143,10 @@ class HomeViewModel : ViewModel() {
} }
_apiName.postValue(repo?.name) _apiName.postValue(repo?.name)
_randomItems.postValue(listOf())
if (repo?.hasMainPage == true) { if (repo?.hasMainPage == true) {
_page.postValue(Resource.Loading()) _page.postValue(Resource.Loading())
_randomItems.postValue(null)
val data = repo?.getMainPage() val data = repo?.getMainPage()
when (data) { when (data) {

View file

@ -9,6 +9,7 @@ import android.app.RemoteAction
import android.content.* import android.content.*
import android.content.Context.AUDIO_SERVICE import android.content.Context.AUDIO_SERVICE
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.content.res.ColorStateList
import android.content.res.Resources import android.content.res.Resources
import android.database.ContentObserver import android.database.ContentObserver
import android.graphics.Color import android.graphics.Color
@ -19,11 +20,8 @@ import android.net.Uri
import android.os.* import android.os.*
import android.provider.Settings import android.provider.Settings
import android.util.TypedValue import android.util.TypedValue
import android.view.LayoutInflater import android.view.*
import android.view.MotionEvent
import android.view.View
import android.view.View.* import android.view.View.*
import android.view.ViewGroup
import android.view.WindowManager.LayoutParams.* import android.view.WindowManager.LayoutParams.*
import android.view.animation.AccelerateInterpolator import android.view.animation.AccelerateInterpolator
import android.view.animation.AlphaAnimation import android.view.animation.AlphaAnimation
@ -32,6 +30,9 @@ import android.view.animation.AnimationUtils
import android.widget.* import android.widget.*
import android.widget.Toast.LENGTH_SHORT import android.widget.Toast.LENGTH_SHORT
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.graphics.blue
import androidx.core.graphics.green
import androidx.core.graphics.red
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
@ -119,8 +120,8 @@ const val PLAYBACK_SPEED = "playback_speed"
const val RESIZE_MODE_KEY = "resize_mode" // Last used resize mode const val RESIZE_MODE_KEY = "resize_mode" // Last used resize mode
const val PLAYBACK_SPEED_KEY = "playback_speed" // Last used playback speed const val PLAYBACK_SPEED_KEY = "playback_speed" // Last used playback speed
const val OPENING_PRECENTAGE = 50 const val OPENING_PERCENTAGE = 50
const val AUTOLOAD_NEXT_EPISODE_PRECENTAGE = 80 const val AUTOLOAD_NEXT_EPISODE_PERCENTAGE = 80
enum class PlayerEventType(val value: Int) { enum class PlayerEventType(val value: Int) {
Stop(-1), Stop(-1),
@ -266,8 +267,8 @@ class PlayerFragment : Fragment() {
private var simpleCache: SimpleCache? = null private var simpleCache: SimpleCache? = null
/** Layout */ /** Layout */
private var width = Resources.getSystem().displayMetrics.heightPixels private var width = Resources.getSystem().displayMetrics.widthPixels
private var height = Resources.getSystem().displayMetrics.widthPixels private var height = Resources.getSystem().displayMetrics.heightPixels
private var statusBarHeight by Delegates.notNull<Int>() private var statusBarHeight by Delegates.notNull<Int>()
private var navigationBarHeight by Delegates.notNull<Int>() private var navigationBarHeight by Delegates.notNull<Int>()
@ -670,7 +671,7 @@ class PlayerFragment : Fragment() {
val percentage = ((position ?: exoPlayer.currentPosition) * 100 / exoPlayer.contentDuration).toInt() val percentage = ((position ?: exoPlayer.currentPosition) * 100 / exoPlayer.contentDuration).toInt()
val hasNext = hasNextEpisode() val hasNext = hasNextEpisode()
if (percentage >= AUTOLOAD_NEXT_EPISODE_PRECENTAGE && hasNext) { if (percentage >= AUTOLOAD_NEXT_EPISODE_PERCENTAGE && hasNext) {
val ep = val ep =
episodes[playerData.episodeIndex + 1] episodes[playerData.episodeIndex + 1]
@ -680,7 +681,7 @@ class PlayerFragment : Fragment() {
} }
} }
} }
val nextEp = percentage >= OPENING_PRECENTAGE val nextEp = percentage >= OPENING_PERCENTAGE
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))
@ -868,13 +869,21 @@ class PlayerFragment : Fragment() {
} }
private fun updateLock() { private fun updateLock() {
video_locked_img?.setImageResource(if (isLocked) R.drawable.video_locked else R.drawable.video_unlocked) lock_player?.setIconResource(if (isLocked) R.drawable.video_locked else R.drawable.video_unlocked)
val color = if (isLocked) context?.colorFromAttribute(R.attr.colorPrimary) var color = if (isLocked) context?.colorFromAttribute(R.attr.colorPrimary)
else Color.WHITE else Color.WHITE
if (color != null) { if (color != null) {
video_locked_text?.setTextColor(color) lock_player?.setTextColor(color)
video_locked_img?.setColorFilter(color) lock_player?.iconTint = ColorStateList.valueOf(color)
color = Color.argb(50, color.red, color.green, color.blue)
lock_player?.rippleColor = ColorStateList.valueOf(color)
//if(isLocked) {
// lock_player?.iconTint = ContextCompat.getColorStateList(lock_player.context, R.color.white)
//
//} else {
// lock_player?.iconTint = context?.colorFromAttribute(R.attr.colorPrimary)
//}
//lock_player?.setColorFilter(color)
} }
val isClick = !isLocked val isClick = !isLocked
@ -1007,6 +1016,45 @@ class PlayerFragment : Fragment() {
handlePlayerEvent(event.value) handlePlayerEvent(event.value)
} }
private fun handleKeyEvent(event: KeyEvent): Boolean {
event.keyCode.let { keyCode ->
when (event.action) {
// don't allow dpad move when hidden
KeyEvent.KEYCODE_DPAD_LEFT,
KeyEvent.KEYCODE_DPAD_DOWN,
KeyEvent.KEYCODE_DPAD_UP,
KeyEvent.KEYCODE_DPAD_RIGHT,
KeyEvent.KEYCODE_DPAD_DOWN_LEFT,
KeyEvent.KEYCODE_DPAD_DOWN_RIGHT,
KeyEvent.KEYCODE_DPAD_UP_LEFT,
KeyEvent.KEYCODE_DPAD_UP_RIGHT -> {
if (!isShowing) {
return true
}
}
KeyEvent.ACTION_DOWN -> {
when (keyCode) {
KeyEvent.KEYCODE_DPAD_CENTER -> {
if (!isShowing) {
onClickChange()
return true
}
}
}
//println("Keycode: $keyCode")
//showToast(
// this,
// "Got Keycode $keyCode | ${KeyEvent.keyCodeToString(keyCode)} \n ${event?.action}",
// Toast.LENGTH_LONG
//)
}
}
}
return false
}
var lastMuteVolume = 0f var lastMuteVolume = 0f
private fun handlePlayerEvent(event: Int) { private fun handlePlayerEvent(event: Int) {
@ -1069,7 +1117,7 @@ class PlayerFragment : Fragment() {
requireContext().setKey(PLAYBACK_SPEED_KEY, playbackSpeed) requireContext().setKey(PLAYBACK_SPEED_KEY, playbackSpeed)
val param = PlaybackParameters(playbackSpeed) val param = PlaybackParameters(playbackSpeed)
exoPlayer.playbackParameters = param exoPlayer.playbackParameters = param
player_speed_text?.text = playback_speed_btt?.text =
getString(R.string.player_speed_text_format).format(playbackSpeed).replace(".0x", "x") getString(R.string.player_speed_text_format).format(playbackSpeed).replace(".0x", "x")
} }
} }
@ -1720,6 +1768,7 @@ class PlayerFragment : Fragment() {
override fun onDestroy() { override fun onDestroy() {
MainActivity.playerEventListener = null MainActivity.playerEventListener = null
MainActivity.keyEventListener = null
/* val lp = activity?.window?.attributes /* val lp = activity?.window?.attributes
@ -1845,7 +1894,7 @@ class PlayerFragment : Fragment() {
player_torrent_info?.isVisible = false 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
hasUsedFirstRender = false hasUsedFirstRender = false
@ -1993,7 +2042,7 @@ class PlayerFragment : Fragment() {
player_view?.player = exoPlayer player_view?.player = exoPlayer
// Sets the speed // Sets the speed
exoPlayer.playbackParameters = PlaybackParameters(playbackSpeed) exoPlayer.playbackParameters = PlaybackParameters(playbackSpeed)
player_speed_text?.text = playback_speed_btt?.text =
getString(R.string.player_speed_text_format).format(playbackSpeed).replace(".0x", "x") getString(R.string.player_speed_text_format).format(playbackSpeed).replace(".0x", "x")
var hName: String? = null var hName: String? = null
@ -2058,19 +2107,27 @@ class PlayerFragment : Fragment() {
handlePlayerEvent(eventType) handlePlayerEvent(eventType)
} }
MainActivity.keyEventListener = { keyEvent ->
if (keyEvent != null) {
handleKeyEvent(keyEvent)
} else {
false
}
}
exoPlayer.addListener(object : Player.Listener { exoPlayer.addListener(object : Player.Listener {
override fun onRenderedFirstFrame() { override fun onRenderedFirstFrame() {
super.onRenderedFirstFrame() super.onRenderedFirstFrame()
isCurrentlySkippingEp = false isCurrentlySkippingEp = false
val height = exoPlayer.videoFormat?.height val playerHeight = exoPlayer.videoFormat?.height
val width = exoPlayer.videoFormat?.width val playerWidth = exoPlayer.videoFormat?.width
video_title_rez?.text = video_title_rez?.text =
if (height == null || width == null) currentUrl?.name if (playerHeight == null || playerWidth == null) currentUrl?.name
?: "" else ?: "" else
// if (isTorrent) "${width}x${height}" else // if (isTorrent) "${width}x${height}" else
if (isDownloadedFile || currentUrl?.name == null) "${width}x${height}" else "${currentUrl.name} - ${width}x${height}" if (isDownloadedFile || currentUrl?.name == null) "${playerWidth}x${playerHeight}" else "${currentUrl.name} - ${playerWidth}x${playerHeight}"
if (!hasUsedFirstRender) { // DON'T WANT TO SET MULTIPLE MESSAGES if (!hasUsedFirstRender) { // DON'T WANT TO SET MULTIPLE MESSAGES
//&& !isTorrent //&& !isTorrent
@ -2084,7 +2141,7 @@ class PlayerFragment : Fragment() {
changeSkip() changeSkip()
} }
.setLooper(Looper.getMainLooper()) .setLooper(Looper.getMainLooper())
.setPosition( /* positionMs= */exoPlayer.contentDuration * OPENING_PRECENTAGE / 100) .setPosition( /* positionMs= */exoPlayer.contentDuration * OPENING_PERCENTAGE / 100)
// .setPayload(customPayloadData) // .setPayload(customPayloadData)
.setDeleteAfterDelivery(false) .setDeleteAfterDelivery(false)
.send() .send()
@ -2093,7 +2150,7 @@ class PlayerFragment : Fragment() {
changeSkip() changeSkip()
} }
.setLooper(Looper.getMainLooper()) .setLooper(Looper.getMainLooper())
.setPosition( /* positionMs= */exoPlayer.contentDuration * AUTOLOAD_NEXT_EPISODE_PRECENTAGE / 100) .setPosition( /* positionMs= */exoPlayer.contentDuration * AUTOLOAD_NEXT_EPISODE_PERCENTAGE / 100)
// .setPayload(customPayloadData) // .setPayload(customPayloadData)
.setDeleteAfterDelivery(false) .setDeleteAfterDelivery(false)

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/dubColorBg"/> <solid android:color="@color/dubColorBg"/>
<corners android:radius="@dimen/roundedImageRadius"/> <corners android:radius="@dimen/rounded_image_radius"/>
<stroke android:color="@color/dubColor" android:width="2dp"/> <stroke android:color="@color/dubColor" android:width="2dp"/>
</shape> </shape>

View file

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="?attr/white"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M4,18l8.5,-6L4,6v12zM13,6v12l8.5,-6L13,6z"/>
</vector>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/subColorBg"/> <solid android:color="@color/subColorBg"/>
<corners android:radius="@dimen/roundedImageRadius"/> <corners android:radius="@dimen/rounded_image_radius"/>
<stroke android:color="@color/subColor" android:width="2dp"/> <stroke android:color="@color/subColor" android:width="2dp"/>
</shape> </shape>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/typeColorBg"/> <solid android:color="@color/typeColorBg"/>
<corners android:radius="@dimen/roundedImageRadius"/> <corners android:radius="@dimen/rounded_image_radius"/>
<stroke android:color="@color/typeColor" android:width="1dp"/> <stroke android:color="@color/typeColor" android:width="1dp"/>
</shape> </shape>

View file

@ -1,6 +1,6 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="850.39dp" android:width="24dp"
android:height="850.39dp" android:height="24dp"
android:viewportWidth="850.39" android:viewportWidth="850.39"
android:viewportHeight="850.39"> android:viewportHeight="850.39">
<path <path

View file

@ -1,6 +1,6 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="850.39dp" android:width="24dp"
android:height="850.39dp" android:height="24dp"
android:viewportWidth="850.39" android:viewportWidth="850.39"
android:viewportHeight="850.39"> android:viewportHeight="850.39">
<path <path

View file

@ -5,12 +5,12 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:nextFocusRight="@id/download_child_episode_download" android:nextFocusRight="@id/download_child_episode_download"
android:nextFocusLeft="@id/download_child_episode_download" android:nextFocusLeft="@id/nav_rail_view"
android:id="@+id/download_child_episode_holder" android:id="@+id/download_child_episode_holder"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
app:cardBackgroundColor="@color/transparent" app:cardBackgroundColor="@color/transparent"
app:cardElevation="0dp" app:cardElevation="0dp"
android:foreground="@drawable/outline_drawable" android:foreground="@drawable/outline_drawable"

View file

@ -5,7 +5,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
app:cardBackgroundColor="?attr/boxItemBackground" app:cardBackgroundColor="?attr/boxItemBackground"
android:id="@+id/episode_holder" android:id="@+id/episode_holder"
android:foreground="@drawable/outline_drawable" android:foreground="@drawable/outline_drawable"

View file

@ -15,7 +15,7 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/download_child_toolbar" android:id="@+id/download_child_toolbar"
android:paddingTop="@dimen/navbarHeight" android:paddingTop="@dimen/navbar_height"
tools:title="Overlord" tools:title="Overlord"
android:background="?attr/primaryGrayBackground" android:background="?attr/primaryGrayBackground"
app:navigationIconTint="?attr/iconColor" app:navigationIconTint="?attr/iconColor"

View file

@ -110,6 +110,7 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:nextFocusLeft="@id/nav_rail_view"
android:descendantFocusability="afterDescendants" android:descendantFocusability="afterDescendants"
android:background="?attr/primaryBlackBackground" android:background="?attr/primaryBlackBackground"

View file

@ -162,6 +162,9 @@
<ImageView <ImageView
android:nextFocusDown="@id/home_main_poster_recyclerview" android:nextFocusDown="@id/home_main_poster_recyclerview"
android:nextFocusUp="@id/nav_rail_view"
android:nextFocusLeft="@id/nav_rail_view"
android:id="@+id/home_change_api" android:id="@+id/home_change_api"
android:layout_margin="10dp" android:layout_margin="10dp"
android:layout_gravity="center|end" android:layout_gravity="center|end"
@ -229,7 +232,7 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:nextFocusLeft="@id/home_main_info" android:nextFocusLeft="@id/nav_rail_view"
android:nextFocusUp="@id/home_main_poster_recyclerview" android:nextFocusUp="@id/home_main_poster_recyclerview"
android:nextFocusRight="@id/home_main_info" android:nextFocusRight="@id/home_main_info"
android:nextFocusDown="@id/home_watch_child_more_info" android:nextFocusDown="@id/home_watch_child_more_info"
@ -247,7 +250,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:nextFocusLeft="@id/home_main_play" android:nextFocusLeft="@id/home_main_play"
android:nextFocusUp="@id/home_main_poster_recyclerview" android:nextFocusUp="@id/home_main_poster_recyclerview"
android:nextFocusRight="@id/home_main_play" android:nextFocusRight="@id/home_change_api"
android:nextFocusDown="@id/home_watch_child_more_info" android:nextFocusDown="@id/home_watch_child_more_info"
style="@style/BlackButton" style="@style/BlackButton"
@ -275,6 +278,7 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<FrameLayout <FrameLayout
android:nextFocusLeft="@id/nav_rail_view"
android:nextFocusUp="@id/home_main_info" android:nextFocusUp="@id/home_main_info"
android:nextFocusDown="@id/home_watch_child_recyclerview" android:nextFocusDown="@id/home_watch_child_recyclerview"
@ -322,6 +326,7 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<FrameLayout <FrameLayout
android:nextFocusLeft="@id/nav_rail_view"
android:nextFocusUp="@id/home_watch_child_recyclerview" android:nextFocusUp="@id/home_watch_child_recyclerview"
android:nextFocusForward="@id/home_bookmarked_child_recyclerview" android:nextFocusForward="@id/home_bookmarked_child_recyclerview"
@ -331,6 +336,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView <ImageView
android:nextFocusLeft="@id/nav_rail_view"
android:background="?android:attr/selectableItemBackgroundBorderless" android:background="?android:attr/selectableItemBackgroundBorderless"
android:tint="?attr/textColor" android:tint="?attr/textColor"
@ -374,6 +380,7 @@
</LinearLayout> </LinearLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:nextFocusLeft="@id/nav_rail_view"
android:descendantFocusability="afterDescendants" android:descendantFocusability="afterDescendants"
android:id="@+id/home_master_recycler" android:id="@+id/home_master_recycler"
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -118,7 +118,7 @@
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/result_poster_holder" android:id="@+id/result_poster_holder"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="140dp"> android:layout_height="140dp">
<ImageView <ImageView

View file

@ -9,7 +9,7 @@
tools:context=".ui.search.SearchFragment" tools:context=".ui.search.SearchFragment"
android:orientation="vertical" android:orientation="vertical"
android:background="?attr/primaryGrayBackground" android:background="?attr/primaryGrayBackground"
android:layout_marginTop="@dimen/navbarHeight"> android:layout_marginTop="@dimen/navbar_height">
<FrameLayout <FrameLayout
android:visibility="visible" android:visibility="visible"
android:layout_margin="10dp" android:layout_margin="10dp"
@ -23,8 +23,9 @@
android:layout_marginEnd="30dp" android:layout_marginEnd="30dp"
android:layout_height="30dp"> android:layout_height="30dp">
<androidx.appcompat.widget.SearchView <androidx.appcompat.widget.SearchView
android:nextFocusUp="@id/nav_rail_view"
android:nextFocusRight="@id/search_filter" android:nextFocusRight="@id/search_filter"
android:nextFocusLeft="@id/search_filter" android:nextFocusLeft="@id/nav_rail_view"
android:nextFocusDown="@id/cardSpace" android:nextFocusDown="@id/cardSpace"
android:imeOptions="actionSearch" android:imeOptions="actionSearch"
@ -60,6 +61,7 @@
</androidx.appcompat.widget.SearchView> </androidx.appcompat.widget.SearchView>
</FrameLayout> </FrameLayout>
<ImageView <ImageView
android:nextFocusUp="@id/nav_rail_view"
android:nextFocusRight="@id/main_search" android:nextFocusRight="@id/main_search"
android:nextFocusLeft="@id/main_search" android:nextFocusLeft="@id/main_search"
android:nextFocusDown="@id/cardSpace" android:nextFocusDown="@id/cardSpace"
@ -78,6 +80,7 @@
</FrameLayout> </FrameLayout>
<com.lagradost.cloudstream3.ui.AutofitRecyclerView <com.lagradost.cloudstream3.ui.AutofitRecyclerView
android:nextFocusLeft="@id/nav_rail_view"
android:descendantFocusability="afterDescendants" android:descendantFocusability="afterDescendants"
android:background="?attr/primaryBlackBackground" android:background="?attr/primaryBlackBackground"
@ -93,6 +96,7 @@
android:orientation="vertical" android:orientation="vertical"
/> />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:nextFocusLeft="@id/nav_rail_view"
android:descendantFocusability="afterDescendants" android:descendantFocusability="afterDescendants"
android:background="?attr/primaryBlackBackground" android:background="?attr/primaryBlackBackground"

View file

@ -9,7 +9,7 @@
android:layout_height="234dp" android:layout_height="234dp"
android:layout_marginBottom="2dp" android:layout_marginBottom="2dp"
android:elevation="10dp" android:elevation="10dp"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
android:id="@+id/backgroundCard" android:id="@+id/backgroundCard"
app:cardBackgroundColor="?attr/primaryGrayBackground" app:cardBackgroundColor="?attr/primaryGrayBackground"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"

View file

@ -9,7 +9,7 @@
android:layout_height="180dp" android:layout_height="180dp"
android:layout_marginBottom="2dp" android:layout_marginBottom="2dp"
android:elevation="10dp" android:elevation="10dp"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
android:id="@+id/backgroundCard" android:id="@+id/backgroundCard"
app:cardBackgroundColor="?attr/primaryGrayBackground" app:cardBackgroundColor="?attr/primaryGrayBackground"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"

View file

@ -490,315 +490,66 @@
android:paddingTop="10dp" android:paddingTop="10dp"
android:paddingBottom="10dp" android:paddingBottom="10dp"
> >
<androidx.cardview.widget.CardView <com.google.android.material.button.MaterialButton
android:nextFocusLeft="@id/skip_episode" android:nextFocusLeft="@id/skip_episode"
android:nextFocusRight="@id/resize_player" android:nextFocusRight="@id/resize_player"
android:id="@+id/lock_player" android:id="@+id/lock_player"
xmlns:card_view="http://schemas.android.com/apk/res-auto" app:iconSize="30dp"
android:layout_width="wrap_content" android:text="@string/video_lock"
android:layout_height="match_parent" app:icon="@drawable/video_locked"
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="@drawable/video_bottom_button" style="@style/VideoButton"/>
card_view:cardElevation="0dp"
tools:visibility="visible"
>
<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/video_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 <LinearLayout
android:id="@+id/lock_holder" android:id="@+id/lock_holder"
android:orientation="horizontal" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.cardview.widget.CardView
<com.google.android.material.button.MaterialButton
android:nextFocusLeft="@id/lock_player" android:nextFocusLeft="@id/lock_player"
android:nextFocusRight="@id/playback_speed_btt" android:nextFocusRight="@id/playback_speed_btt"
android:id="@+id/resize_player" android:id="@+id/resize_player"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
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"
card_view:cardCornerRadius="@dimen/card_corner_radius"
card_view:cardBackgroundColor="@color/transparent"
android:foreground="@drawable/video_bottom_button"
card_view:cardElevation="0dp"
tools:visibility="visible"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
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> android:text="@string/video_aspect_ratio_resize"
<TextView app:icon="@drawable/ic_baseline_aspect_ratio_24"
android:layout_width="match_parent" style="@style/VideoButton"/>
android:layout_height="match_parent" <com.google.android.material.button.MaterialButton
android:text="@string/video_aspect_ratio_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:nextFocusLeft="@id/resize_player" android:nextFocusLeft="@id/resize_player"
android:nextFocusRight="@id/sources_btt" android:nextFocusRight="@id/sources_btt"
android:id="@+id/playback_speed_btt" android:id="@+id/playback_speed_btt"
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="@drawable/video_bottom_button"
app:cardElevation="0dp"
> tools:text="Speed"
<LinearLayout app:icon="@drawable/ic_baseline_speed_24"
android:layout_width="wrap_content" style="@style/VideoButton"/>
android:layout_height="match_parent" <com.google.android.material.button.MaterialButton
android:orientation="horizontal"
android:paddingStart="10dp"
android:paddingEnd="10dp"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_baseline_speed_24"
app:tint="@android:color/white"
>
</ImageView>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Speed"
android:gravity="center"
android:paddingStart="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>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:nextFocusLeft="@id/playback_speed_btt" android:nextFocusLeft="@id/playback_speed_btt"
android:nextFocusRight="@id/skip_op" android:nextFocusRight="@id/skip_op"
android:id="@+id/sources_btt" android:id="@+id/sources_btt"
xmlns:card_view="http://schemas.android.com/apk/res-auto" android:text="@string/video_source"
android:layout_width="wrap_content" app:icon="@drawable/ic_baseline_playlist_play_24"
android:layout_height="match_parent" style="@style/VideoButton"/>
android:layout_marginTop="5dp" <com.google.android.material.button.MaterialButton
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="@drawable/video_bottom_button"
card_view:cardElevation="0dp"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingStart="10dp"
android:paddingEnd="10dp"
>
<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">
</ImageView>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/video_source"
android:gravity="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>
<androidx.cardview.widget.CardView
android:nextFocusLeft="@id/sources_btt" android:nextFocusLeft="@id/sources_btt"
android:nextFocusRight="@id/skip_episode" android:nextFocusRight="@id/skip_episode"
android:id="@+id/skip_op" android:id="@+id/skip_op"
xmlns:card_view="http://schemas.android.com/apk/res-auto" android:text="@string/video_skip_op"
android:layout_width="wrap_content" app:icon="@drawable/ic_baseline_fast_forward_24"
android:layout_height="match_parent" style="@style/VideoButton"/>
android:layout_marginTop="5dp" <com.google.android.material.button.MaterialButton
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="@drawable/video_bottom_button"
card_view:cardElevation="0dp"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingStart="10dp"
android:paddingEnd="10dp"
>
<ImageView
android:layout_width="24dp"
android:layout_height="match_parent"
android:src="@drawable/exo_controls_fastforward"
app:tint="@android:color/white"
android:layout_gravity="center">
</ImageView>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/video_skip_op"
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>
<androidx.cardview.widget.CardView
android:nextFocusLeft="@id/skip_op" android:nextFocusLeft="@id/skip_op"
android:nextFocusRight="@id/lock_player" android:nextFocusRight="@id/lock_player"
android:id="@+id/skip_episode" android:id="@+id/skip_episode"
xmlns:card_view="http://schemas.android.com/apk/res-auto" android:text="@string/next_episode"
android:layout_width="wrap_content" app:icon="@drawable/ic_baseline_skip_next_24"
android:layout_height="match_parent" style="@style/VideoButton"
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="@drawable/video_bottom_button"
card_view:cardElevation="0dp"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingStart="10dp"
android:paddingEnd="10dp"
>
<ImageView
android:layout_width="24dp"
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> </LinearLayout>
</HorizontalScrollView> </HorizontalScrollView>
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<View <View

View file

@ -11,7 +11,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
app:cardBackgroundColor="@color/transparent" app:cardBackgroundColor="@color/transparent"
app:cardElevation="0dp" app:cardElevation="0dp"
android:foreground="@drawable/outline_drawable" android:foreground="@drawable/outline_drawable"

View file

@ -10,7 +10,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
app:cardBackgroundColor="?attr/boxItemBackground" app:cardBackgroundColor="?attr/boxItemBackground"
android:foreground="@drawable/outline_drawable" android:foreground="@drawable/outline_drawable"

View file

@ -19,14 +19,14 @@
android:layout_marginBottom="2dp" android:layout_marginBottom="2dp"
android:elevation="0dp" android:elevation="0dp"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
app:cardBackgroundColor="?attr/boxItemBackground" app:cardBackgroundColor="?attr/boxItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
> >
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:elevation="0dp" android:elevation="0dp"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
android:layout_width="54dp" android:layout_width="54dp"
android:layout_height="match_parent"> android:layout_height="match_parent">
<ImageView <ImageView

View file

@ -17,7 +17,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginBottom="2dp" android:layout_marginBottom="2dp"
android:elevation="10dp" android:elevation="10dp"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
android:id="@+id/backgroundCard" android:id="@+id/backgroundCard"
app:cardBackgroundColor="?attr/primaryGrayBackground" app:cardBackgroundColor="?attr/primaryGrayBackground"
> >

View file

@ -15,14 +15,14 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:elevation="0dp" android:elevation="0dp"
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
app:cardBackgroundColor="?attr/boxItemBackground" app:cardBackgroundColor="?attr/boxItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
> >
<!-- USING CROP RATIO (182/268), centerCrop for fill --> <!-- USING CROP RATIO (182/268), centerCrop for fill -->
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
app:cardCornerRadius="@dimen/roundedImageRadius" app:cardCornerRadius="@dimen/rounded_image_radius"
android:layout_width="35dp" android:layout_width="35dp"
android:elevation="0dp" android:elevation="0dp"
android:layout_height="match_parent"> android:layout_height="match_parent">

View file

@ -114,14 +114,14 @@
</string-array> </string-array>
<string-array name="themes_names"> <string-array name="themes_names">
<item>Normal</item>
<item>Dark</item> <item>Dark</item>
<item>Gray</item>
<item>Amoled</item> <item>Amoled</item>
<item>Flashbang</item> <item>Flashbang</item>
</string-array> </string-array>
<string-array name="themes_names_values"> <string-array name="themes_names_values">
<item>Black</item>
<item>AmoledLight</item> <item>AmoledLight</item>
<item>Black</item>
<item>Amoled</item> <item>Amoled</item>
<item>Light</item> <item>Light</item>
</string-array> </string-array>

View file

@ -30,7 +30,9 @@
<color name="typeColor">#3BF585</color> <color name="typeColor">#3BF585</color>
<color name="typeColorBg">#803BF585</color> <color name="typeColorBg">#803BF585</color>
<color name="video_ripple">#73FFFFFF</color> <color name="video_ripple">#80FFFFFF</color>
<color name="video_button_ripple">#32FFFFFF</color>
<color name="black_overlay">#66000000</color> <color name="black_overlay">#66000000</color>
<color name="darkBarTransparent">#C0121212</color> <color name="darkBarTransparent">#C0121212</color>
<color name="darkBar">#121212</color> <color name="darkBar">#121212</color>

View file

@ -2,8 +2,8 @@
<!-- Default screen margins, per the Android Design guidelines. --> <!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="roundedImageRadius">5dp</dimen> <dimen name="rounded_image_radius">5dp</dimen>
<dimen name="navbarHeight">0dp</dimen> <dimen name="navbar_height">0dp</dimen>
<dimen name="card_corner_radius">2dp</dimen> <dimen name="card_corner_radius">2dp</dimen>
<dimen name="result_padding">15dp</dimen> <dimen name="result_padding">15dp</dimen>
</resources> </resources>

View file

@ -311,6 +311,28 @@
<item name="android:layout_width">wrap_content</item> <item name="android:layout_width">wrap_content</item>
</style> </style>
<style name="VideoButton">
<item name="android:stateListAnimator">@null</item>
<item name="strokeColor">@color/transparent</item>
<item name="backgroundTint">@color/transparent</item>
<item name="rippleColor">@color/video_button_ripple</item>
<item name="android:shadowColor">@color/transparent</item>
<item name="cornerRadius">3dp</item>
<item name="iconTint">@color/white</item>
<item name="textColor">@color/white</item>
<item name="android:textColor">@color/white</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">45dp</item>
<item name="android:gravity">center</item>
<item name="android:layout_gravity">center</item>
<item name="textAllCaps">false</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">10sp</item>
<item name="android:layout_marginStart">10dp</item>
<item name="android:layout_marginEnd">10dp</item>
</style>
<!--@color/white ?attr/colorPrimary--> <!--@color/white ?attr/colorPrimary-->
<!--CHECK ?attr/darkBackground ?attr/colorPrimary--> <!--CHECK ?attr/darkBackground ?attr/colorPrimary-->
<!-- CHROMECAST --> <!-- CHROMECAST -->